/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
import * as $protobuf from '@ohos/protobufjs';
import Long from 'long';

$protobuf.util.Long = Long
$protobuf.configure()

// Common aliases
const $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;

// Exported root namespace
const $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});

export const veryzhun = $root.veryzhun = (() => {

    /**
     * Namespace veryzhun.
     * @exports veryzhun
     * @namespace
     */
    const veryzhun = {};

    veryzhun.FlightLoc = (function () {

        /**
         * Properties of a FlightLoc.
         * @memberof veryzhun
         * @interface IFlightLoc
         * @property {string|null} [Anum] FlightLoc Anum
         * @property {string|null} [Fnum] FlightLoc Fnum
         * @property {string|null} [Airline] FlightLoc Airline
         * @property {string|null} [Org] FlightLoc Org
         * @property {string|null} [Dst] FlightLoc Dst
         * @property {string|null} [Squawk] FlightLoc Squawk
         * @property {number|null} [Time] FlightLoc Time
         * @property {number|null} [Lat] FlightLoc Lat
         * @property {number|null} [Lon] FlightLoc Lon
         * @property {number|null} [Alt] FlightLoc Alt
         * @property {number|null} [Ang] FlightLoc Ang
         * @property {number|null} [Spd] FlightLoc Spd
         * @property {number|null} [Vspd] FlightLoc Vspd
         * @property {number|null} [ScheduledDeptime] FlightLoc ScheduledDeptime
         * @property {string|null} [icaoId] FlightLoc icaoId
         * @property {string|null} [onground] FlightLoc onground
         * @property {string|null} [ftype] FlightLoc ftype
         * @property {number|null} [orgTinezone] FlightLoc orgTinezone
         * @property {number|null} [dstTinezone] FlightLoc dstTinezone
         * @property {string|null} [ftypename] FlightLoc ftypename
         * @property {string|null} [icaoatype] FlightLoc icaoatype
         * @property {number|null} [domIntFlag] FlightLoc domIntFlag
         * @property {string|null} [fservice] FlightLoc fservice
         * @property {number|null} [source] FlightLoc source
         * @property {string|null} [device] FlightLoc device
         * @property {string|null} [circle] FlightLoc circle
         * @property {string|null} [fattr] FlightLoc fattr
         */

        /**
         * Constructs a new FlightLoc.
         * @memberof veryzhun
         * @classdesc Represents a FlightLoc.
         * @implements IFlightLoc
         * @constructor
         * @param {veryzhun.IFlightLoc=} [properties] Properties to set
         */
        function FlightLoc(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * FlightLoc Anum.
         * @member {string} Anum
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Anum = "";

        /**
         * FlightLoc Fnum.
         * @member {string|null|undefined} Fnum
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Fnum = null;

        /**
         * FlightLoc Airline.
         * @member {string|null|undefined} Airline
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Airline = null;

        /**
         * FlightLoc Org.
         * @member {string|null|undefined} Org
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Org = null;

        /**
         * FlightLoc Dst.
         * @member {string|null|undefined} Dst
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Dst = null;

        /**
         * FlightLoc Squawk.
         * @member {string|null|undefined} Squawk
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Squawk = null;

        /**
         * FlightLoc Time.
         * @member {number} Time
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Time = 0;

        /**
         * FlightLoc Lat.
         * @member {number|null|undefined} Lat
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Lat = null;

        /**
         * FlightLoc Lon.
         * @member {number|null|undefined} Lon
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Lon = null;

        /**
         * FlightLoc Alt.
         * @member {number|null|undefined} Alt
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Alt = null;

        /**
         * FlightLoc Ang.
         * @member {number|null|undefined} Ang
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Ang = null;

        /**
         * FlightLoc Spd.
         * @member {number|null|undefined} Spd
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Spd = null;

        /**
         * FlightLoc Vspd.
         * @member {number|null|undefined} Vspd
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.Vspd = null;

        /**
         * FlightLoc ScheduledDeptime.
         * @member {number} ScheduledDeptime
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.ScheduledDeptime = 0;

        /**
         * FlightLoc icaoId.
         * @member {string} icaoId
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.icaoId = "";

        /**
         * FlightLoc onground.
         * @member {string} onground
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.onground = "";

        /**
         * FlightLoc ftype.
         * @member {string} ftype
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.ftype = "";

        /**
         * FlightLoc orgTinezone.
         * @member {number} orgTinezone
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.orgTinezone = 0;

        /**
         * FlightLoc dstTinezone.
         * @member {number} dstTinezone
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.dstTinezone = 0;

        /**
         * FlightLoc ftypename.
         * @member {string} ftypename
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.ftypename = "";

        /**
         * FlightLoc icaoatype.
         * @member {string} icaoatype
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.icaoatype = "";

        /**
         * FlightLoc domIntFlag.
         * @member {number} domIntFlag
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.domIntFlag = 0;

        /**
         * FlightLoc fservice.
         * @member {string} fservice
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.fservice = "";

        /**
         * FlightLoc source.
         * @member {number} source
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.source = 0;

        /**
         * FlightLoc device.
         * @member {string} device
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.device = "";

        /**
         * FlightLoc circle.
         * @member {string} circle
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.circle = "";

        /**
         * FlightLoc fattr.
         * @member {string} fattr
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        FlightLoc.prototype.fattr = "";

        // OneOf field names bound to virtual getters and setters
        let $oneOfFields;

        /**
         * FlightLoc FnumNullable.
         * @member {"Fnum"|undefined} FnumNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "FnumNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Fnum"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * FlightLoc AirlineNullable.
         * @member {"Airline"|undefined} AirlineNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "AirlineNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Airline"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * FlightLoc OrgNullable.
         * @member {"Org"|undefined} OrgNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "OrgNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Org"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * FlightLoc DstNullable.
         * @member {"Dst"|undefined} DstNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "DstNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Dst"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * FlightLoc SquawkNullable.
         * @member {"Squawk"|undefined} SquawkNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "SquawkNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Squawk"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * FlightLoc LatNullable.
         * @member {"Lat"|undefined} LatNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "LatNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Lat"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * FlightLoc LonNullable.
         * @member {"Lon"|undefined} LonNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "LonNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Lon"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * FlightLoc AltNullable.
         * @member {"Alt"|undefined} AltNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "AltNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Alt"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * FlightLoc AngNullable.
         * @member {"Ang"|undefined} AngNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "AngNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Ang"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * FlightLoc SpdNullable.
         * @member {"Spd"|undefined} SpdNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "SpdNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Spd"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * FlightLoc VspdNullable.
         * @member {"Vspd"|undefined} VspdNullable
         * @memberof veryzhun.FlightLoc
         * @instance
         */
        Object.defineProperty(FlightLoc.prototype, "VspdNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Vspd"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * Creates a new FlightLoc instance using the specified properties.
         * @function create
         * @memberof veryzhun.FlightLoc
         * @static
         * @param {veryzhun.IFlightLoc=} [properties] Properties to set
         * @returns {veryzhun.FlightLoc} FlightLoc instance
         */
        FlightLoc.create = function create(properties) {
            return new FlightLoc(properties);
        };

        /**
         * Encodes the specified FlightLoc message. Does not implicitly {@link veryzhun.FlightLoc.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.FlightLoc
         * @static
         * @param {veryzhun.IFlightLoc} message FlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightLoc.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.Anum != null && Object.hasOwnProperty.call(message, "Anum")) {
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.Anum);
            }
            if (message.Fnum != null && Object.hasOwnProperty.call(message, "Fnum")) {
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.Fnum);
            }
            if (message.Airline != null && Object.hasOwnProperty.call(message, "Airline")) {
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.Airline);
            }
            if (message.Org != null && Object.hasOwnProperty.call(message, "Org")) {
                writer.uint32(/* id 4, wireType 2 =*/34).string(message.Org);
            }
            if (message.Dst != null && Object.hasOwnProperty.call(message, "Dst")) {
                writer.uint32(/* id 5, wireType 2 =*/42).string(message.Dst);
            }
            if (message.Squawk != null && Object.hasOwnProperty.call(message, "Squawk")) {
                writer.uint32(/* id 6, wireType 2 =*/50).string(message.Squawk);
            }
            if (message.Time != null && Object.hasOwnProperty.call(message, "Time")) {
                writer.uint32(/* id 7, wireType 0 =*/56).int32(message.Time);
            }
            if (message.Lat != null && Object.hasOwnProperty.call(message, "Lat")) {
                writer.uint32(/* id 8, wireType 1 =*/65).double(message.Lat);
            }
            if (message.Lon != null && Object.hasOwnProperty.call(message, "Lon")) {
                writer.uint32(/* id 9, wireType 1 =*/73).double(message.Lon);
            }
            if (message.Alt != null && Object.hasOwnProperty.call(message, "Alt")) {
                writer.uint32(/* id 10, wireType 5 =*/85).float(message.Alt);
            }
            if (message.Ang != null && Object.hasOwnProperty.call(message, "Ang")) {
                writer.uint32(/* id 11, wireType 5 =*/93).float(message.Ang);
            }
            if (message.Spd != null && Object.hasOwnProperty.call(message, "Spd")) {
                writer.uint32(/* id 12, wireType 5 =*/101).float(message.Spd);
            }
            if (message.Vspd != null && Object.hasOwnProperty.call(message, "Vspd")) {
                writer.uint32(/* id 13, wireType 5 =*/109).float(message.Vspd);
            }
            if (message.ScheduledDeptime != null && Object.hasOwnProperty.call(message, "ScheduledDeptime")) {
                writer.uint32(/* id 14, wireType 0 =*/112).int32(message.ScheduledDeptime);
            }
            if (message.icaoId != null && Object.hasOwnProperty.call(message, "icaoId")) {
                writer.uint32(/* id 15, wireType 2 =*/122).string(message.icaoId);
            }
            if (message.onground != null && Object.hasOwnProperty.call(message, "onground")) {
                writer.uint32(/* id 16, wireType 2 =*/130).string(message.onground);
            }
            if (message.ftype != null && Object.hasOwnProperty.call(message, "ftype")) {
                writer.uint32(/* id 17, wireType 2 =*/138).string(message.ftype);
            }
            if (message.orgTinezone != null && Object.hasOwnProperty.call(message, "orgTinezone")) {
                writer.uint32(/* id 18, wireType 0 =*/144).int32(message.orgTinezone);
            }
            if (message.dstTinezone != null && Object.hasOwnProperty.call(message, "dstTinezone")) {
                writer.uint32(/* id 19, wireType 0 =*/152).int32(message.dstTinezone);
            }
            if (message.ftypename != null && Object.hasOwnProperty.call(message, "ftypename")) {
                writer.uint32(/* id 20, wireType 2 =*/162).string(message.ftypename);
            }
            if (message.icaoatype != null && Object.hasOwnProperty.call(message, "icaoatype")) {
                writer.uint32(/* id 21, wireType 2 =*/170).string(message.icaoatype);
            }
            if (message.domIntFlag != null && Object.hasOwnProperty.call(message, "domIntFlag")) {
                writer.uint32(/* id 22, wireType 0 =*/176).int32(message.domIntFlag);
            }
            if (message.fservice != null && Object.hasOwnProperty.call(message, "fservice")) {
                writer.uint32(/* id 23, wireType 2 =*/186).string(message.fservice);
            }
            if (message.source != null && Object.hasOwnProperty.call(message, "source")) {
                writer.uint32(/* id 24, wireType 0 =*/192).int32(message.source);
            }
            if (message.device != null && Object.hasOwnProperty.call(message, "device")) {
                writer.uint32(/* id 25, wireType 2 =*/202).string(message.device);
            }
            if (message.circle != null && Object.hasOwnProperty.call(message, "circle")) {
                writer.uint32(/* id 26, wireType 2 =*/210).string(message.circle);
            }
            if (message.fattr != null && Object.hasOwnProperty.call(message, "fattr")) {
                writer.uint32(/* id 27, wireType 2 =*/218).string(message.fattr);
            }
            return writer;
        };

        /**
         * Encodes the specified FlightLoc message, length delimited. Does not implicitly {@link veryzhun.FlightLoc.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.FlightLoc
         * @static
         * @param {veryzhun.IFlightLoc} message FlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightLoc.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a FlightLoc message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.FlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.FlightLoc} FlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightLoc.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.FlightLoc();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.Anum = reader.string();
                        break;
                    }
                    case 2: {
                        message.Fnum = reader.string();
                        break;
                    }
                    case 3: {
                        message.Airline = reader.string();
                        break;
                    }
                    case 4: {
                        message.Org = reader.string();
                        break;
                    }
                    case 5: {
                        message.Dst = reader.string();
                        break;
                    }
                    case 6: {
                        message.Squawk = reader.string();
                        break;
                    }
                    case 7: {
                        message.Time = reader.int32();
                        break;
                    }
                    case 8: {
                        message.Lat = reader.double();
                        break;
                    }
                    case 9: {
                        message.Lon = reader.double();
                        break;
                    }
                    case 10: {
                        message.Alt = reader.float();
                        break;
                    }
                    case 11: {
                        message.Ang = reader.float();
                        break;
                    }
                    case 12: {
                        message.Spd = reader.float();
                        break;
                    }
                    case 13: {
                        message.Vspd = reader.float();
                        break;
                    }
                    case 14: {
                        message.ScheduledDeptime = reader.int32();
                        break;
                    }
                    case 15: {
                        message.icaoId = reader.string();
                        break;
                    }
                    case 16: {
                        message.onground = reader.string();
                        break;
                    }
                    case 17: {
                        message.ftype = reader.string();
                        break;
                    }
                    case 18: {
                        message.orgTinezone = reader.int32();
                        break;
                    }
                    case 19: {
                        message.dstTinezone = reader.int32();
                        break;
                    }
                    case 20: {
                        message.ftypename = reader.string();
                        break;
                    }
                    case 21: {
                        message.icaoatype = reader.string();
                        break;
                    }
                    case 22: {
                        message.domIntFlag = reader.int32();
                        break;
                    }
                    case 23: {
                        message.fservice = reader.string();
                        break;
                    }
                    case 24: {
                        message.source = reader.int32();
                        break;
                    }
                    case 25: {
                        message.device = reader.string();
                        break;
                    }
                    case 26: {
                        message.circle = reader.string();
                        break;
                    }
                    case 27: {
                        message.fattr = reader.string();
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a FlightLoc message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.FlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.FlightLoc} FlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightLoc.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a FlightLoc message.
         * @function verify
         * @memberof veryzhun.FlightLoc
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        FlightLoc.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            let properties = {};
            if (message.Anum != null && message.hasOwnProperty("Anum")) {
                if (!$util.isString(message.Anum)) {
                    return "Anum: string expected";
                }
            }
            if (message.Fnum != null && message.hasOwnProperty("Fnum")) {
                properties.FnumNullable = 1;
                if (!$util.isString(message.Fnum)) {
                    return "Fnum: string expected";
                }
            }
            if (message.Airline != null && message.hasOwnProperty("Airline")) {
                properties.AirlineNullable = 1;
                if (!$util.isString(message.Airline)) {
                    return "Airline: string expected";
                }
            }
            if (message.Org != null && message.hasOwnProperty("Org")) {
                properties.OrgNullable = 1;
                if (!$util.isString(message.Org)) {
                    return "Org: string expected";
                }
            }
            if (message.Dst != null && message.hasOwnProperty("Dst")) {
                properties.DstNullable = 1;
                if (!$util.isString(message.Dst)) {
                    return "Dst: string expected";
                }
            }
            if (message.Squawk != null && message.hasOwnProperty("Squawk")) {
                properties.SquawkNullable = 1;
                if (!$util.isString(message.Squawk)) {
                    return "Squawk: string expected";
                }
            }
            if (message.Time != null && message.hasOwnProperty("Time")) {
                if (!$util.isInteger(message.Time)) {
                    return "Time: integer expected";
                }
            }
            if (message.Lat != null && message.hasOwnProperty("Lat")) {
                properties.LatNullable = 1;
                if (typeof message.Lat !== "number") {
                    return "Lat: number expected";
                }
            }
            if (message.Lon != null && message.hasOwnProperty("Lon")) {
                properties.LonNullable = 1;
                if (typeof message.Lon !== "number") {
                    return "Lon: number expected";
                }
            }
            if (message.Alt != null && message.hasOwnProperty("Alt")) {
                properties.AltNullable = 1;
                if (typeof message.Alt !== "number") {
                    return "Alt: number expected";
                }
            }
            if (message.Ang != null && message.hasOwnProperty("Ang")) {
                properties.AngNullable = 1;
                if (typeof message.Ang !== "number") {
                    return "Ang: number expected";
                }
            }
            if (message.Spd != null && message.hasOwnProperty("Spd")) {
                properties.SpdNullable = 1;
                if (typeof message.Spd !== "number") {
                    return "Spd: number expected";
                }
            }
            if (message.Vspd != null && message.hasOwnProperty("Vspd")) {
                properties.VspdNullable = 1;
                if (typeof message.Vspd !== "number") {
                    return "Vspd: number expected";
                }
            }
            if (message.ScheduledDeptime != null && message.hasOwnProperty("ScheduledDeptime")) {
                if (!$util.isInteger(message.ScheduledDeptime)) {
                    return "ScheduledDeptime: integer expected";
                }
            }
            if (message.icaoId != null && message.hasOwnProperty("icaoId")) {
                if (!$util.isString(message.icaoId)) {
                    return "icaoId: string expected";
                }
            }
            if (message.onground != null && message.hasOwnProperty("onground")) {
                if (!$util.isString(message.onground)) {
                    return "onground: string expected";
                }
            }
            if (message.ftype != null && message.hasOwnProperty("ftype")) {
                if (!$util.isString(message.ftype)) {
                    return "ftype: string expected";
                }
            }
            if (message.orgTinezone != null && message.hasOwnProperty("orgTinezone")) {
                if (!$util.isInteger(message.orgTinezone)) {
                    return "orgTinezone: integer expected";
                }
            }
            if (message.dstTinezone != null && message.hasOwnProperty("dstTinezone")) {
                if (!$util.isInteger(message.dstTinezone)) {
                    return "dstTinezone: integer expected";
                }
            }
            if (message.ftypename != null && message.hasOwnProperty("ftypename")) {
                if (!$util.isString(message.ftypename)) {
                    return "ftypename: string expected";
                }
            }
            if (message.icaoatype != null && message.hasOwnProperty("icaoatype")) {
                if (!$util.isString(message.icaoatype)) {
                    return "icaoatype: string expected";
                }
            }
            if (message.domIntFlag != null && message.hasOwnProperty("domIntFlag")) {
                if (!$util.isInteger(message.domIntFlag)) {
                    return "domIntFlag: integer expected";
                }
            }
            if (message.fservice != null && message.hasOwnProperty("fservice")) {
                if (!$util.isString(message.fservice)) {
                    return "fservice: string expected";
                }
            }
            if (message.source != null && message.hasOwnProperty("source")) {
                if (!$util.isInteger(message.source)) {
                    return "source: integer expected";
                }
            }
            if (message.device != null && message.hasOwnProperty("device")) {
                if (!$util.isString(message.device)) {
                    return "device: string expected";
                }
            }
            if (message.circle != null && message.hasOwnProperty("circle")) {
                if (!$util.isString(message.circle)) {
                    return "circle: string expected";
                }
            }
            if (message.fattr != null && message.hasOwnProperty("fattr")) {
                if (!$util.isString(message.fattr)) {
                    return "fattr: string expected";
                }
            }
            return null;
        };

        /**
         * Creates a FlightLoc message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.FlightLoc
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.FlightLoc} FlightLoc
         */
        FlightLoc.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.FlightLoc) {
                return object;
            }
            let message = new $root.veryzhun.FlightLoc();
            if (object.Anum != null) {
                message.Anum = String(object.Anum);
            }
            if (object.Fnum != null) {
                message.Fnum = String(object.Fnum);
            }
            if (object.Airline != null) {
                message.Airline = String(object.Airline);
            }
            if (object.Org != null) {
                message.Org = String(object.Org);
            }
            if (object.Dst != null) {
                message.Dst = String(object.Dst);
            }
            if (object.Squawk != null) {
                message.Squawk = String(object.Squawk);
            }
            if (object.Time != null) {
                message.Time = object.Time | 0;
            }
            if (object.Lat != null) {
                message.Lat = Number(object.Lat);
            }
            if (object.Lon != null) {
                message.Lon = Number(object.Lon);
            }
            if (object.Alt != null) {
                message.Alt = Number(object.Alt);
            }
            if (object.Ang != null) {
                message.Ang = Number(object.Ang);
            }
            if (object.Spd != null) {
                message.Spd = Number(object.Spd);
            }
            if (object.Vspd != null) {
                message.Vspd = Number(object.Vspd);
            }
            if (object.ScheduledDeptime != null) {
                message.ScheduledDeptime = object.ScheduledDeptime | 0;
            }
            if (object.icaoId != null) {
                message.icaoId = String(object.icaoId);
            }
            if (object.onground != null) {
                message.onground = String(object.onground);
            }
            if (object.ftype != null) {
                message.ftype = String(object.ftype);
            }
            if (object.orgTinezone != null) {
                message.orgTinezone = object.orgTinezone | 0;
            }
            if (object.dstTinezone != null) {
                message.dstTinezone = object.dstTinezone | 0;
            }
            if (object.ftypename != null) {
                message.ftypename = String(object.ftypename);
            }
            if (object.icaoatype != null) {
                message.icaoatype = String(object.icaoatype);
            }
            if (object.domIntFlag != null) {
                message.domIntFlag = object.domIntFlag | 0;
            }
            if (object.fservice != null) {
                message.fservice = String(object.fservice);
            }
            if (object.source != null) {
                message.source = object.source | 0;
            }
            if (object.device != null) {
                message.device = String(object.device);
            }
            if (object.circle != null) {
                message.circle = String(object.circle);
            }
            if (object.fattr != null) {
                message.fattr = String(object.fattr);
            }
            return message;
        };

        /**
         * Creates a plain object from a FlightLoc message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.FlightLoc
         * @static
         * @param {veryzhun.FlightLoc} message FlightLoc
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        FlightLoc.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.Anum = "";
                object.Time = 0;
                object.ScheduledDeptime = 0;
                object.icaoId = "";
                object.onground = "";
                object.ftype = "";
                object.orgTinezone = 0;
                object.dstTinezone = 0;
                object.ftypename = "";
                object.icaoatype = "";
                object.domIntFlag = 0;
                object.fservice = "";
                object.source = 0;
                object.device = "";
                object.circle = "";
                object.fattr = "";
            }
            if (message.Anum != null && message.hasOwnProperty("Anum")) {
                object.Anum = message.Anum;
            }
            if (message.Fnum != null && message.hasOwnProperty("Fnum")) {
                object.Fnum = message.Fnum;
                if (options.oneofs) {
                    object.FnumNullable = "Fnum";
                }
            }
            if (message.Airline != null && message.hasOwnProperty("Airline")) {
                object.Airline = message.Airline;
                if (options.oneofs) {
                    object.AirlineNullable = "Airline";
                }
            }
            if (message.Org != null && message.hasOwnProperty("Org")) {
                object.Org = message.Org;
                if (options.oneofs) {
                    object.OrgNullable = "Org";
                }
            }
            if (message.Dst != null && message.hasOwnProperty("Dst")) {
                object.Dst = message.Dst;
                if (options.oneofs) {
                    object.DstNullable = "Dst";
                }
            }
            if (message.Squawk != null && message.hasOwnProperty("Squawk")) {
                object.Squawk = message.Squawk;
                if (options.oneofs) {
                    object.SquawkNullable = "Squawk";
                }
            }
            if (message.Time != null && message.hasOwnProperty("Time")) {
                object.Time = message.Time;
            }
            if (message.Lat != null && message.hasOwnProperty("Lat")) {
                object.Lat = options.json && !isFinite(message.Lat) ? String(message.Lat) : message.Lat;
                if (options.oneofs) {
                    object.LatNullable = "Lat";
                }
            }
            if (message.Lon != null && message.hasOwnProperty("Lon")) {
                object.Lon = options.json && !isFinite(message.Lon) ? String(message.Lon) : message.Lon;
                if (options.oneofs) {
                    object.LonNullable = "Lon";
                }
            }
            if (message.Alt != null && message.hasOwnProperty("Alt")) {
                object.Alt = options.json && !isFinite(message.Alt) ? String(message.Alt) : message.Alt;
                if (options.oneofs) {
                    object.AltNullable = "Alt";
                }
            }
            if (message.Ang != null && message.hasOwnProperty("Ang")) {
                object.Ang = options.json && !isFinite(message.Ang) ? String(message.Ang) : message.Ang;
                if (options.oneofs) {
                    object.AngNullable = "Ang";
                }
            }
            if (message.Spd != null && message.hasOwnProperty("Spd")) {
                object.Spd = options.json && !isFinite(message.Spd) ? String(message.Spd) : message.Spd;
                if (options.oneofs) {
                    object.SpdNullable = "Spd";
                }
            }
            if (message.Vspd != null && message.hasOwnProperty("Vspd")) {
                object.Vspd = options.json && !isFinite(message.Vspd) ? String(message.Vspd) : message.Vspd;
                if (options.oneofs) {
                    object.VspdNullable = "Vspd";
                }
            }
            if (message.ScheduledDeptime != null && message.hasOwnProperty("ScheduledDeptime")) {
                object.ScheduledDeptime = message.ScheduledDeptime;
            }
            if (message.icaoId != null && message.hasOwnProperty("icaoId")) {
                object.icaoId = message.icaoId;
            }
            if (message.onground != null && message.hasOwnProperty("onground")) {
                object.onground = message.onground;
            }
            if (message.ftype != null && message.hasOwnProperty("ftype")) {
                object.ftype = message.ftype;
            }
            if (message.orgTinezone != null && message.hasOwnProperty("orgTinezone")) {
                object.orgTinezone = message.orgTinezone;
            }
            if (message.dstTinezone != null && message.hasOwnProperty("dstTinezone")) {
                object.dstTinezone = message.dstTinezone;
            }
            if (message.ftypename != null && message.hasOwnProperty("ftypename")) {
                object.ftypename = message.ftypename;
            }
            if (message.icaoatype != null && message.hasOwnProperty("icaoatype")) {
                object.icaoatype = message.icaoatype;
            }
            if (message.domIntFlag != null && message.hasOwnProperty("domIntFlag")) {
                object.domIntFlag = message.domIntFlag;
            }
            if (message.fservice != null && message.hasOwnProperty("fservice")) {
                object.fservice = message.fservice;
            }
            if (message.source != null && message.hasOwnProperty("source")) {
                object.source = message.source;
            }
            if (message.device != null && message.hasOwnProperty("device")) {
                object.device = message.device;
            }
            if (message.circle != null && message.hasOwnProperty("circle")) {
                object.circle = message.circle;
            }
            if (message.fattr != null && message.hasOwnProperty("fattr")) {
                object.fattr = message.fattr;
            }
            return object;
        };

        /**
         * Converts this FlightLoc to JSON.
         * @function toJSON
         * @memberof veryzhun.FlightLoc
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        FlightLoc.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for FlightLoc
         * @function getTypeUrl
         * @memberof veryzhun.FlightLoc
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        FlightLoc.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.FlightLoc";
        };

        return FlightLoc;
    })();

    veryzhun.ForecastFlightLoc = (function () {

        /**
         * Properties of a ForecastFlightLoc.
         * @memberof veryzhun
         * @interface IForecastFlightLoc
         * @property {number|null} [flyOverTime] ForecastFlightLoc flyOverTime
         * @property {number|null} [lat] ForecastFlightLoc lat
         * @property {number|null} [lon] ForecastFlightLoc lon
         * @property {string|null} [name] ForecastFlightLoc name
         */

        /**
         * Constructs a new ForecastFlightLoc.
         * @memberof veryzhun
         * @classdesc Represents a ForecastFlightLoc.
         * @implements IForecastFlightLoc
         * @constructor
         * @param {veryzhun.IForecastFlightLoc=} [properties] Properties to set
         */
        function ForecastFlightLoc(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * ForecastFlightLoc flyOverTime.
         * @member {number} flyOverTime
         * @memberof veryzhun.ForecastFlightLoc
         * @instance
         */
        ForecastFlightLoc.prototype.flyOverTime = 0;

        /**
         * ForecastFlightLoc lat.
         * @member {number} lat
         * @memberof veryzhun.ForecastFlightLoc
         * @instance
         */
        ForecastFlightLoc.prototype.lat = 0;

        /**
         * ForecastFlightLoc lon.
         * @member {number} lon
         * @memberof veryzhun.ForecastFlightLoc
         * @instance
         */
        ForecastFlightLoc.prototype.lon = 0;

        /**
         * ForecastFlightLoc name.
         * @member {string} name
         * @memberof veryzhun.ForecastFlightLoc
         * @instance
         */
        ForecastFlightLoc.prototype.name = "";

        /**
         * Creates a new ForecastFlightLoc instance using the specified properties.
         * @function create
         * @memberof veryzhun.ForecastFlightLoc
         * @static
         * @param {veryzhun.IForecastFlightLoc=} [properties] Properties to set
         * @returns {veryzhun.ForecastFlightLoc} ForecastFlightLoc instance
         */
        ForecastFlightLoc.create = function create(properties) {
            return new ForecastFlightLoc(properties);
        };

        /**
         * Encodes the specified ForecastFlightLoc message. Does not implicitly {@link veryzhun.ForecastFlightLoc.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.ForecastFlightLoc
         * @static
         * @param {veryzhun.IForecastFlightLoc} message ForecastFlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastFlightLoc.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.flyOverTime != null && Object.hasOwnProperty.call(message, "flyOverTime")) {
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.flyOverTime);
            }
            if (message.lat != null && Object.hasOwnProperty.call(message, "lat")) {
                writer.uint32(/* id 2, wireType 1 =*/17).double(message.lat);
            }
            if (message.lon != null && Object.hasOwnProperty.call(message, "lon")) {
                writer.uint32(/* id 3, wireType 1 =*/25).double(message.lon);
            }
            if (message.name != null && Object.hasOwnProperty.call(message, "name")) {
                writer.uint32(/* id 4, wireType 2 =*/34).string(message.name);
            }
            return writer;
        };

        /**
         * Encodes the specified ForecastFlightLoc message, length delimited. Does not implicitly {@link veryzhun.ForecastFlightLoc.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.ForecastFlightLoc
         * @static
         * @param {veryzhun.IForecastFlightLoc} message ForecastFlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastFlightLoc.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a ForecastFlightLoc message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.ForecastFlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.ForecastFlightLoc} ForecastFlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastFlightLoc.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.ForecastFlightLoc();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.flyOverTime = reader.int32();
                        break;
                    }
                    case 2: {
                        message.lat = reader.double();
                        break;
                    }
                    case 3: {
                        message.lon = reader.double();
                        break;
                    }
                    case 4: {
                        message.name = reader.string();
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a ForecastFlightLoc message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.ForecastFlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.ForecastFlightLoc} ForecastFlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastFlightLoc.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a ForecastFlightLoc message.
         * @function verify
         * @memberof veryzhun.ForecastFlightLoc
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ForecastFlightLoc.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.flyOverTime != null && message.hasOwnProperty("flyOverTime")) {
                if (!$util.isInteger(message.flyOverTime)) {
                    return "flyOverTime: integer expected";
                }
            }
            if (message.lat != null && message.hasOwnProperty("lat")) {
                if (typeof message.lat !== "number") {
                    return "lat: number expected";
                }
            }
            if (message.lon != null && message.hasOwnProperty("lon")) {
                if (typeof message.lon !== "number") {
                    return "lon: number expected";
                }
            }
            if (message.name != null && message.hasOwnProperty("name")) {
                if (!$util.isString(message.name)) {
                    return "name: string expected";
                }
            }
            return null;
        };

        /**
         * Creates a ForecastFlightLoc message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.ForecastFlightLoc
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.ForecastFlightLoc} ForecastFlightLoc
         */
        ForecastFlightLoc.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.ForecastFlightLoc) {
                return object;
            }
            let message = new $root.veryzhun.ForecastFlightLoc();
            if (object.flyOverTime != null) {
                message.flyOverTime = object.flyOverTime | 0;
            }
            if (object.lat != null) {
                message.lat = Number(object.lat);
            }
            if (object.lon != null) {
                message.lon = Number(object.lon);
            }
            if (object.name != null) {
                message.name = String(object.name);
            }
            return message;
        };

        /**
         * Creates a plain object from a ForecastFlightLoc message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.ForecastFlightLoc
         * @static
         * @param {veryzhun.ForecastFlightLoc} message ForecastFlightLoc
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ForecastFlightLoc.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.flyOverTime = 0;
                object.lat = 0;
                object.lon = 0;
                object.name = "";
            }
            if (message.flyOverTime != null && message.hasOwnProperty("flyOverTime")) {
                object.flyOverTime = message.flyOverTime;
            }
            if (message.lat != null && message.hasOwnProperty("lat")) {
                object.lat = options.json && !isFinite(message.lat) ? String(message.lat) : message.lat;
            }
            if (message.lon != null && message.hasOwnProperty("lon")) {
                object.lon = options.json && !isFinite(message.lon) ? String(message.lon) : message.lon;
            }
            if (message.name != null && message.hasOwnProperty("name")) {
                object.name = message.name;
            }
            return object;
        };

        /**
         * Converts this ForecastFlightLoc to JSON.
         * @function toJSON
         * @memberof veryzhun.ForecastFlightLoc
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        ForecastFlightLoc.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for ForecastFlightLoc
         * @function getTypeUrl
         * @memberof veryzhun.ForecastFlightLoc
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        ForecastFlightLoc.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.ForecastFlightLoc";
        };

        return ForecastFlightLoc;
    })();

    veryzhun.FlightPath = (function () {

        /**
         * Properties of a FlightPath.
         * @memberof veryzhun
         * @interface IFlightPath
         * @property {veryzhun.ITrace|null} [trace] FlightPath trace
         * @property {veryzhun.IForecastTrace|null} [forecastTrace] FlightPath forecastTrace
         */

        /**
         * Constructs a new FlightPath.
         * @memberof veryzhun
         * @classdesc Represents a FlightPath.
         * @implements IFlightPath
         * @constructor
         * @param {veryzhun.IFlightPath=} [properties] Properties to set
         */
        function FlightPath(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * FlightPath trace.
         * @member {veryzhun.ITrace|null|undefined} trace
         * @memberof veryzhun.FlightPath
         * @instance
         */
        FlightPath.prototype.trace = null;

        /**
         * FlightPath forecastTrace.
         * @member {veryzhun.IForecastTrace|null|undefined} forecastTrace
         * @memberof veryzhun.FlightPath
         * @instance
         */
        FlightPath.prototype.forecastTrace = null;

        /**
         * Creates a new FlightPath instance using the specified properties.
         * @function create
         * @memberof veryzhun.FlightPath
         * @static
         * @param {veryzhun.IFlightPath=} [properties] Properties to set
         * @returns {veryzhun.FlightPath} FlightPath instance
         */
        FlightPath.create = function create(properties) {
            return new FlightPath(properties);
        };

        /**
         * Encodes the specified FlightPath message. Does not implicitly {@link veryzhun.FlightPath.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.FlightPath
         * @static
         * @param {veryzhun.IFlightPath} message FlightPath message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightPath.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.trace != null && Object.hasOwnProperty.call(message, "trace")) {
                $root.veryzhun.Trace.encode(message.trace, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            }
            if (message.forecastTrace != null && Object.hasOwnProperty.call(message, "forecastTrace")) {
                $root.veryzhun.ForecastTrace.encode(message.forecastTrace, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
            }
            return writer;
        };

        /**
         * Encodes the specified FlightPath message, length delimited. Does not implicitly {@link veryzhun.FlightPath.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.FlightPath
         * @static
         * @param {veryzhun.IFlightPath} message FlightPath message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightPath.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a FlightPath message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.FlightPath
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.FlightPath} FlightPath
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightPath.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.FlightPath();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.trace = $root.veryzhun.Trace.decode(reader, reader.uint32());
                        break;
                    }
                    case 2: {
                        message.forecastTrace = $root.veryzhun.ForecastTrace.decode(reader, reader.uint32());
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a FlightPath message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.FlightPath
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.FlightPath} FlightPath
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightPath.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a FlightPath message.
         * @function verify
         * @memberof veryzhun.FlightPath
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        FlightPath.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.trace != null && message.hasOwnProperty("trace")) {
                let error = $root.veryzhun.Trace.verify(message.trace);
                if (error) {
                    return "trace." + error;
                }
            }
            if (message.forecastTrace != null && message.hasOwnProperty("forecastTrace")) {
                let error = $root.veryzhun.ForecastTrace.verify(message.forecastTrace);
                if (error) {
                    return "forecastTrace." + error;
                }
            }
            return null;
        };

        /**
         * Creates a FlightPath message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.FlightPath
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.FlightPath} FlightPath
         */
        FlightPath.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.FlightPath) {
                return object;
            }
            let message = new $root.veryzhun.FlightPath();
            if (object.trace != null) {
                if (typeof object.trace !== "object") {
                    throw TypeError(".veryzhun.FlightPath.trace: object expected");
                }
                message.trace = $root.veryzhun.Trace.fromObject(object.trace);
            }
            if (object.forecastTrace != null) {
                if (typeof object.forecastTrace !== "object") {
                    throw TypeError(".veryzhun.FlightPath.forecastTrace: object expected");
                }
                message.forecastTrace = $root.veryzhun.ForecastTrace.fromObject(object.forecastTrace);
            }
            return message;
        };

        /**
         * Creates a plain object from a FlightPath message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.FlightPath
         * @static
         * @param {veryzhun.FlightPath} message FlightPath
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        FlightPath.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.trace = null;
                object.forecastTrace = null;
            }
            if (message.trace != null && message.hasOwnProperty("trace")) {
                object.trace = $root.veryzhun.Trace.toObject(message.trace, options);
            }
            if (message.forecastTrace != null && message.hasOwnProperty("forecastTrace")) {
                object.forecastTrace = $root.veryzhun.ForecastTrace.toObject(message.forecastTrace, options);
            }
            return object;
        };

        /**
         * Converts this FlightPath to JSON.
         * @function toJSON
         * @memberof veryzhun.FlightPath
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        FlightPath.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for FlightPath
         * @function getTypeUrl
         * @memberof veryzhun.FlightPath
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        FlightPath.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.FlightPath";
        };

        return FlightPath;
    })();

    veryzhun.Trace = (function () {

        /**
         * Properties of a Trace.
         * @memberof veryzhun
         * @interface ITrace
         * @property {number|null} [realFlag] Trace realFlag
         * @property {Array.<veryzhun.IFlightLoc>|null} [path] Trace path
         */

        /**
         * Constructs a new Trace.
         * @memberof veryzhun
         * @classdesc Represents a Trace.
         * @implements ITrace
         * @constructor
         * @param {veryzhun.ITrace=} [properties] Properties to set
         */
        function Trace(properties) {
            this.path = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * Trace realFlag.
         * @member {number} realFlag
         * @memberof veryzhun.Trace
         * @instance
         */
        Trace.prototype.realFlag = 0;

        /**
         * Trace path.
         * @member {Array.<veryzhun.IFlightLoc>} path
         * @memberof veryzhun.Trace
         * @instance
         */
        Trace.prototype.path = $util.emptyArray;

        /**
         * Creates a new Trace instance using the specified properties.
         * @function create
         * @memberof veryzhun.Trace
         * @static
         * @param {veryzhun.ITrace=} [properties] Properties to set
         * @returns {veryzhun.Trace} Trace instance
         */
        Trace.create = function create(properties) {
            return new Trace(properties);
        };

        /**
         * Encodes the specified Trace message. Does not implicitly {@link veryzhun.Trace.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.Trace
         * @static
         * @param {veryzhun.ITrace} message Trace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        Trace.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.realFlag != null && Object.hasOwnProperty.call(message, "realFlag")) {
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.realFlag);
            }
            if (message.path != null && message.path.length) {
                for (let i = 0; i < message.path.length; ++i) {
                    $root.veryzhun.FlightLoc.encode(message.path[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified Trace message, length delimited. Does not implicitly {@link veryzhun.Trace.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.Trace
         * @static
         * @param {veryzhun.ITrace} message Trace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        Trace.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a Trace message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.Trace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.Trace} Trace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Trace.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.Trace();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.realFlag = reader.int32();
                        break;
                    }
                    case 2: {
                        if (!(message.path && message.path.length)) {
                            message.path = [];
                        }
                        message.path.push($root.veryzhun.FlightLoc.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a Trace message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.Trace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.Trace} Trace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Trace.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a Trace message.
         * @function verify
         * @memberof veryzhun.Trace
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        Trace.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.realFlag != null && message.hasOwnProperty("realFlag")) {
                if (!$util.isInteger(message.realFlag)) {
                    return "realFlag: integer expected";
                }
            }
            if (message.path != null && message.hasOwnProperty("path")) {
                if (!Array.isArray(message.path)) {
                    return "path: array expected";
                }
                for (let i = 0; i < message.path.length; ++i) {
                    let error = $root.veryzhun.FlightLoc.verify(message.path[i]);
                    if (error) {
                        return "path." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a Trace message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.Trace
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.Trace} Trace
         */
        Trace.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.Trace) {
                return object;
            }
            let message = new $root.veryzhun.Trace();
            if (object.realFlag != null) {
                message.realFlag = object.realFlag | 0;
            }
            if (object.path) {
                if (!Array.isArray(object.path)) {
                    throw TypeError(".veryzhun.Trace.path: array expected");
                }
                message.path = [];
                for (let i = 0; i < object.path.length; ++i) {
                    if (typeof object.path[i] !== "object") {
                        throw TypeError(".veryzhun.Trace.path: object expected");
                    }
                    message.path[i] = $root.veryzhun.FlightLoc.fromObject(object.path[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a Trace message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.Trace
         * @static
         * @param {veryzhun.Trace} message Trace
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        Trace.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.path = [];
            }
            if (options.defaults) {
                object.realFlag = 0;
            }
            if (message.realFlag != null && message.hasOwnProperty("realFlag")) {
                object.realFlag = message.realFlag;
            }
            if (message.path && message.path.length) {
                object.path = [];
                for (let j = 0; j < message.path.length; ++j) {
                    object.path[j] = $root.veryzhun.FlightLoc.toObject(message.path[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this Trace to JSON.
         * @function toJSON
         * @memberof veryzhun.Trace
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        Trace.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for Trace
         * @function getTypeUrl
         * @memberof veryzhun.Trace
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        Trace.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.Trace";
        };

        return Trace;
    })();

    veryzhun.ForecastTrace = (function () {

        /**
         * Properties of a ForecastTrace.
         * @memberof veryzhun
         * @interface IForecastTrace
         * @property {Array.<veryzhun.IForecastFlightLoc>|null} [path] ForecastTrace path
         */

        /**
         * Constructs a new ForecastTrace.
         * @memberof veryzhun
         * @classdesc Represents a ForecastTrace.
         * @implements IForecastTrace
         * @constructor
         * @param {veryzhun.IForecastTrace=} [properties] Properties to set
         */
        function ForecastTrace(properties) {
            this.path = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * ForecastTrace path.
         * @member {Array.<veryzhun.IForecastFlightLoc>} path
         * @memberof veryzhun.ForecastTrace
         * @instance
         */
        ForecastTrace.prototype.path = $util.emptyArray;

        /**
         * Creates a new ForecastTrace instance using the specified properties.
         * @function create
         * @memberof veryzhun.ForecastTrace
         * @static
         * @param {veryzhun.IForecastTrace=} [properties] Properties to set
         * @returns {veryzhun.ForecastTrace} ForecastTrace instance
         */
        ForecastTrace.create = function create(properties) {
            return new ForecastTrace(properties);
        };

        /**
         * Encodes the specified ForecastTrace message. Does not implicitly {@link veryzhun.ForecastTrace.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.ForecastTrace
         * @static
         * @param {veryzhun.IForecastTrace} message ForecastTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastTrace.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.path != null && message.path.length) {
                for (let i = 0; i < message.path.length; ++i) {
                    $root.veryzhun.ForecastFlightLoc.encode(message.path[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified ForecastTrace message, length delimited. Does not implicitly {@link veryzhun.ForecastTrace.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.ForecastTrace
         * @static
         * @param {veryzhun.IForecastTrace} message ForecastTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastTrace.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a ForecastTrace message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.ForecastTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.ForecastTrace} ForecastTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastTrace.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.ForecastTrace();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        if (!(message.path && message.path.length)) {
                            message.path = [];
                        }
                        message.path.push($root.veryzhun.ForecastFlightLoc.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a ForecastTrace message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.ForecastTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.ForecastTrace} ForecastTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastTrace.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a ForecastTrace message.
         * @function verify
         * @memberof veryzhun.ForecastTrace
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ForecastTrace.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.path != null && message.hasOwnProperty("path")) {
                if (!Array.isArray(message.path)) {
                    return "path: array expected";
                }
                for (let i = 0; i < message.path.length; ++i) {
                    let error = $root.veryzhun.ForecastFlightLoc.verify(message.path[i]);
                    if (error) {
                        return "path." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a ForecastTrace message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.ForecastTrace
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.ForecastTrace} ForecastTrace
         */
        ForecastTrace.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.ForecastTrace) {
                return object;
            }
            let message = new $root.veryzhun.ForecastTrace();
            if (object.path) {
                if (!Array.isArray(object.path)) {
                    throw TypeError(".veryzhun.ForecastTrace.path: array expected");
                }
                message.path = [];
                for (let i = 0; i < object.path.length; ++i) {
                    if (typeof object.path[i] !== "object") {
                        throw TypeError(".veryzhun.ForecastTrace.path: object expected");
                    }
                    message.path[i] = $root.veryzhun.ForecastFlightLoc.fromObject(object.path[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a ForecastTrace message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.ForecastTrace
         * @static
         * @param {veryzhun.ForecastTrace} message ForecastTrace
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ForecastTrace.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.path = [];
            }
            if (message.path && message.path.length) {
                object.path = [];
                for (let j = 0; j < message.path.length; ++j) {
                    object.path[j] = $root.veryzhun.ForecastFlightLoc.toObject(message.path[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this ForecastTrace to JSON.
         * @function toJSON
         * @memberof veryzhun.ForecastTrace
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        ForecastTrace.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for ForecastTrace
         * @function getTypeUrl
         * @memberof veryzhun.ForecastTrace
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        ForecastTrace.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.ForecastTrace";
        };

        return ForecastTrace;
    })();

    veryzhun.ForecastData = (function () {

        /**
         * Properties of a ForecastData.
         * @memberof veryzhun
         * @interface IForecastData
         * @property {string|null} [anum] ForecastData anum
         * @property {veryzhun.IFlightLoc|null} [location] ForecastData location
         * @property {Array.<veryzhun.IForecastFlightLoc>|null} [path] ForecastData path
         */

        /**
         * Constructs a new ForecastData.
         * @memberof veryzhun
         * @classdesc Represents a ForecastData.
         * @implements IForecastData
         * @constructor
         * @param {veryzhun.IForecastData=} [properties] Properties to set
         */
        function ForecastData(properties) {
            this.path = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * ForecastData anum.
         * @member {string} anum
         * @memberof veryzhun.ForecastData
         * @instance
         */
        ForecastData.prototype.anum = "";

        /**
         * ForecastData location.
         * @member {veryzhun.IFlightLoc|null|undefined} location
         * @memberof veryzhun.ForecastData
         * @instance
         */
        ForecastData.prototype.location = null;

        /**
         * ForecastData path.
         * @member {Array.<veryzhun.IForecastFlightLoc>} path
         * @memberof veryzhun.ForecastData
         * @instance
         */
        ForecastData.prototype.path = $util.emptyArray;

        /**
         * Creates a new ForecastData instance using the specified properties.
         * @function create
         * @memberof veryzhun.ForecastData
         * @static
         * @param {veryzhun.IForecastData=} [properties] Properties to set
         * @returns {veryzhun.ForecastData} ForecastData instance
         */
        ForecastData.create = function create(properties) {
            return new ForecastData(properties);
        };

        /**
         * Encodes the specified ForecastData message. Does not implicitly {@link veryzhun.ForecastData.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.ForecastData
         * @static
         * @param {veryzhun.IForecastData} message ForecastData message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastData.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.anum != null && Object.hasOwnProperty.call(message, "anum")) {
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.anum);
            }
            if (message.location != null && Object.hasOwnProperty.call(message, "location")) {
                $root.veryzhun.FlightLoc.encode(message.location, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
            }
            if (message.path != null && message.path.length) {
                for (let i = 0; i < message.path.length; ++i) {
                    $root.veryzhun.ForecastFlightLoc.encode(message.path[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified ForecastData message, length delimited. Does not implicitly {@link veryzhun.ForecastData.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.ForecastData
         * @static
         * @param {veryzhun.IForecastData} message ForecastData message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastData.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a ForecastData message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.ForecastData
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.ForecastData} ForecastData
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastData.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.ForecastData();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.anum = reader.string();
                        break;
                    }
                    case 2: {
                        message.location = $root.veryzhun.FlightLoc.decode(reader, reader.uint32());
                        break;
                    }
                    case 3: {
                        if (!(message.path && message.path.length)) {
                            message.path = [];
                        }
                        message.path.push($root.veryzhun.ForecastFlightLoc.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a ForecastData message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.ForecastData
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.ForecastData} ForecastData
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastData.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a ForecastData message.
         * @function verify
         * @memberof veryzhun.ForecastData
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ForecastData.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.anum != null && message.hasOwnProperty("anum")) {
                if (!$util.isString(message.anum)) {
                    return "anum: string expected";
                }
            }
            if (message.location != null && message.hasOwnProperty("location")) {
                let error = $root.veryzhun.FlightLoc.verify(message.location);
                if (error) {
                    return "location." + error;
                }
            }
            if (message.path != null && message.hasOwnProperty("path")) {
                if (!Array.isArray(message.path)) {
                    return "path: array expected";
                }
                for (let i = 0; i < message.path.length; ++i) {
                    let error = $root.veryzhun.ForecastFlightLoc.verify(message.path[i]);
                    if (error) {
                        return "path." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a ForecastData message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.ForecastData
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.ForecastData} ForecastData
         */
        ForecastData.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.ForecastData) {
                return object;
            }
            let message = new $root.veryzhun.ForecastData();
            if (object.anum != null) {
                message.anum = String(object.anum);
            }
            if (object.location != null) {
                if (typeof object.location !== "object") {
                    throw TypeError(".veryzhun.ForecastData.location: object expected");
                }
                message.location = $root.veryzhun.FlightLoc.fromObject(object.location);
            }
            if (object.path) {
                if (!Array.isArray(object.path)) {
                    throw TypeError(".veryzhun.ForecastData.path: array expected");
                }
                message.path = [];
                for (let i = 0; i < object.path.length; ++i) {
                    if (typeof object.path[i] !== "object") {
                        throw TypeError(".veryzhun.ForecastData.path: object expected");
                    }
                    message.path[i] = $root.veryzhun.ForecastFlightLoc.fromObject(object.path[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a ForecastData message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.ForecastData
         * @static
         * @param {veryzhun.ForecastData} message ForecastData
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ForecastData.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.path = [];
            }
            if (options.defaults) {
                object.anum = "";
                object.location = null;
            }
            if (message.anum != null && message.hasOwnProperty("anum")) {
                object.anum = message.anum;
            }
            if (message.location != null && message.hasOwnProperty("location")) {
                object.location = $root.veryzhun.FlightLoc.toObject(message.location, options);
            }
            if (message.path && message.path.length) {
                object.path = [];
                for (let j = 0; j < message.path.length; ++j) {
                    object.path[j] = $root.veryzhun.ForecastFlightLoc.toObject(message.path[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this ForecastData to JSON.
         * @function toJSON
         * @memberof veryzhun.ForecastData
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        ForecastData.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for ForecastData
         * @function getTypeUrl
         * @memberof veryzhun.ForecastData
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        ForecastData.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.ForecastData";
        };

        return ForecastData;
    })();

    veryzhun.ForecastPath = (function () {

        /**
         * Properties of a ForecastPath.
         * @memberof veryzhun
         * @interface IForecastPath
         * @property {Array.<veryzhun.IForecastData>|null} [data] ForecastPath data
         */

        /**
         * Constructs a new ForecastPath.
         * @memberof veryzhun
         * @classdesc Represents a ForecastPath.
         * @implements IForecastPath
         * @constructor
         * @param {veryzhun.IForecastPath=} [properties] Properties to set
         */
        function ForecastPath(properties) {
            this.data = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * ForecastPath data.
         * @member {Array.<veryzhun.IForecastData>} data
         * @memberof veryzhun.ForecastPath
         * @instance
         */
        ForecastPath.prototype.data = $util.emptyArray;

        /**
         * Creates a new ForecastPath instance using the specified properties.
         * @function create
         * @memberof veryzhun.ForecastPath
         * @static
         * @param {veryzhun.IForecastPath=} [properties] Properties to set
         * @returns {veryzhun.ForecastPath} ForecastPath instance
         */
        ForecastPath.create = function create(properties) {
            return new ForecastPath(properties);
        };

        /**
         * Encodes the specified ForecastPath message. Does not implicitly {@link veryzhun.ForecastPath.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.ForecastPath
         * @static
         * @param {veryzhun.IForecastPath} message ForecastPath message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastPath.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.data != null && message.data.length) {
                for (let i = 0; i < message.data.length; ++i) {
                    $root.veryzhun.ForecastData.encode(message.data[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified ForecastPath message, length delimited. Does not implicitly {@link veryzhun.ForecastPath.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.ForecastPath
         * @static
         * @param {veryzhun.IForecastPath} message ForecastPath message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastPath.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a ForecastPath message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.ForecastPath
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.ForecastPath} ForecastPath
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastPath.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.ForecastPath();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        if (!(message.data && message.data.length)) {
                            message.data = [];
                        }
                        message.data.push($root.veryzhun.ForecastData.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a ForecastPath message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.ForecastPath
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.ForecastPath} ForecastPath
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastPath.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a ForecastPath message.
         * @function verify
         * @memberof veryzhun.ForecastPath
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ForecastPath.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.data != null && message.hasOwnProperty("data")) {
                if (!Array.isArray(message.data)) {
                    return "data: array expected";
                }
                for (let i = 0; i < message.data.length; ++i) {
                    let error = $root.veryzhun.ForecastData.verify(message.data[i]);
                    if (error) {
                        return "data." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a ForecastPath message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.ForecastPath
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.ForecastPath} ForecastPath
         */
        ForecastPath.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.ForecastPath) {
                return object;
            }
            let message = new $root.veryzhun.ForecastPath();
            if (object.data) {
                if (!Array.isArray(object.data)) {
                    throw TypeError(".veryzhun.ForecastPath.data: array expected");
                }
                message.data = [];
                for (let i = 0; i < object.data.length; ++i) {
                    if (typeof object.data[i] !== "object") {
                        throw TypeError(".veryzhun.ForecastPath.data: object expected");
                    }
                    message.data[i] = $root.veryzhun.ForecastData.fromObject(object.data[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a ForecastPath message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.ForecastPath
         * @static
         * @param {veryzhun.ForecastPath} message ForecastPath
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ForecastPath.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.data = [];
            }
            if (message.data && message.data.length) {
                object.data = [];
                for (let j = 0; j < message.data.length; ++j) {
                    object.data[j] = $root.veryzhun.ForecastData.toObject(message.data[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this ForecastPath to JSON.
         * @function toJSON
         * @memberof veryzhun.ForecastPath
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        ForecastPath.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for ForecastPath
         * @function getTypeUrl
         * @memberof veryzhun.ForecastPath
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        ForecastPath.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.ForecastPath";
        };

        return ForecastPath;
    })();

    veryzhun.SubscribeFlightLoc = (function () {

        /**
         * Properties of a SubscribeFlightLoc.
         * @memberof veryzhun
         * @interface ISubscribeFlightLoc
         * @property {string|null} [id] SubscribeFlightLoc id
         * @property {Array.<veryzhun.IFlightLoc>|null} [flightLoc] SubscribeFlightLoc flightLoc
         */

        /**
         * Constructs a new SubscribeFlightLoc.
         * @memberof veryzhun
         * @classdesc Represents a SubscribeFlightLoc.
         * @implements ISubscribeFlightLoc
         * @constructor
         * @param {veryzhun.ISubscribeFlightLoc=} [properties] Properties to set
         */
        function SubscribeFlightLoc(properties) {
            this.flightLoc = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * SubscribeFlightLoc id.
         * @member {string} id
         * @memberof veryzhun.SubscribeFlightLoc
         * @instance
         */
        SubscribeFlightLoc.prototype.id = "";

        /**
         * SubscribeFlightLoc flightLoc.
         * @member {Array.<veryzhun.IFlightLoc>} flightLoc
         * @memberof veryzhun.SubscribeFlightLoc
         * @instance
         */
        SubscribeFlightLoc.prototype.flightLoc = $util.emptyArray;

        /**
         * Creates a new SubscribeFlightLoc instance using the specified properties.
         * @function create
         * @memberof veryzhun.SubscribeFlightLoc
         * @static
         * @param {veryzhun.ISubscribeFlightLoc=} [properties] Properties to set
         * @returns {veryzhun.SubscribeFlightLoc} SubscribeFlightLoc instance
         */
        SubscribeFlightLoc.create = function create(properties) {
            return new SubscribeFlightLoc(properties);
        };

        /**
         * Encodes the specified SubscribeFlightLoc message. Does not implicitly {@link veryzhun.SubscribeFlightLoc.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.SubscribeFlightLoc
         * @static
         * @param {veryzhun.ISubscribeFlightLoc} message SubscribeFlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        SubscribeFlightLoc.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.id != null && Object.hasOwnProperty.call(message, "id")) {
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.id);
            }
            if (message.flightLoc != null && message.flightLoc.length) {
                for (let i = 0; i < message.flightLoc.length; ++i) {
                    $root.veryzhun.FlightLoc.encode(message.flightLoc[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified SubscribeFlightLoc message, length delimited. Does not implicitly {@link veryzhun.SubscribeFlightLoc.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.SubscribeFlightLoc
         * @static
         * @param {veryzhun.ISubscribeFlightLoc} message SubscribeFlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        SubscribeFlightLoc.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a SubscribeFlightLoc message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.SubscribeFlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.SubscribeFlightLoc} SubscribeFlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        SubscribeFlightLoc.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.SubscribeFlightLoc();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.id = reader.string();
                        break;
                    }
                    case 2: {
                        if (!(message.flightLoc && message.flightLoc.length)) {
                            message.flightLoc = [];
                        }
                        message.flightLoc.push($root.veryzhun.FlightLoc.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a SubscribeFlightLoc message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.SubscribeFlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.SubscribeFlightLoc} SubscribeFlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        SubscribeFlightLoc.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a SubscribeFlightLoc message.
         * @function verify
         * @memberof veryzhun.SubscribeFlightLoc
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        SubscribeFlightLoc.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.id != null && message.hasOwnProperty("id")) {
                if (!$util.isString(message.id)) {
                    return "id: string expected";
                }
            }
            if (message.flightLoc != null && message.hasOwnProperty("flightLoc")) {
                if (!Array.isArray(message.flightLoc)) {
                    return "flightLoc: array expected";
                }
                for (let i = 0; i < message.flightLoc.length; ++i) {
                    let error = $root.veryzhun.FlightLoc.verify(message.flightLoc[i]);
                    if (error) {
                        return "flightLoc." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a SubscribeFlightLoc message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.SubscribeFlightLoc
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.SubscribeFlightLoc} SubscribeFlightLoc
         */
        SubscribeFlightLoc.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.SubscribeFlightLoc) {
                return object;
            }
            let message = new $root.veryzhun.SubscribeFlightLoc();
            if (object.id != null) {
                message.id = String(object.id);
            }
            if (object.flightLoc) {
                if (!Array.isArray(object.flightLoc)) {
                    throw TypeError(".veryzhun.SubscribeFlightLoc.flightLoc: array expected");
                }
                message.flightLoc = [];
                for (let i = 0; i < object.flightLoc.length; ++i) {
                    if (typeof object.flightLoc[i] !== "object") {
                        throw TypeError(".veryzhun.SubscribeFlightLoc.flightLoc: object expected");
                    }
                    message.flightLoc[i] = $root.veryzhun.FlightLoc.fromObject(object.flightLoc[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a SubscribeFlightLoc message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.SubscribeFlightLoc
         * @static
         * @param {veryzhun.SubscribeFlightLoc} message SubscribeFlightLoc
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        SubscribeFlightLoc.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.flightLoc = [];
            }
            if (options.defaults) {
                object.id = "";
            }
            if (message.id != null && message.hasOwnProperty("id")) {
                object.id = message.id;
            }
            if (message.flightLoc && message.flightLoc.length) {
                object.flightLoc = [];
                for (let j = 0; j < message.flightLoc.length; ++j) {
                    object.flightLoc[j] = $root.veryzhun.FlightLoc.toObject(message.flightLoc[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this SubscribeFlightLoc to JSON.
         * @function toJSON
         * @memberof veryzhun.SubscribeFlightLoc
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        SubscribeFlightLoc.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for SubscribeFlightLoc
         * @function getTypeUrl
         * @memberof veryzhun.SubscribeFlightLoc
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        SubscribeFlightLoc.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.SubscribeFlightLoc";
        };

        return SubscribeFlightLoc;
    })();

    veryzhun.ForecastNoFlyData = (function () {

        /**
         * Properties of a ForecastNoFlyData.
         * @memberof veryzhun
         * @interface IForecastNoFlyData
         * @property {string|null} [fnum] ForecastNoFlyData fnum
         * @property {string|null} [org] ForecastNoFlyData org
         * @property {string|null} [dst] ForecastNoFlyData dst
         * @property {number|null} [orgTinezone] ForecastNoFlyData orgTinezone
         * @property {number|null} [dstTinezone] ForecastNoFlyData dstTinezone
         * @property {number|null} [scheduledDeptime] ForecastNoFlyData scheduledDeptime
         * @property {number|null} [scheduledArrtime] ForecastNoFlyData scheduledArrtime
         * @property {Array.<veryzhun.IForecastFlightLoc>|null} [route] ForecastNoFlyData route
         */

        /**
         * Constructs a new ForecastNoFlyData.
         * @memberof veryzhun
         * @classdesc Represents a ForecastNoFlyData.
         * @implements IForecastNoFlyData
         * @constructor
         * @param {veryzhun.IForecastNoFlyData=} [properties] Properties to set
         */
        function ForecastNoFlyData(properties) {
            this.route = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * ForecastNoFlyData fnum.
         * @member {string} fnum
         * @memberof veryzhun.ForecastNoFlyData
         * @instance
         */
        ForecastNoFlyData.prototype.fnum = "";

        /**
         * ForecastNoFlyData org.
         * @member {string} org
         * @memberof veryzhun.ForecastNoFlyData
         * @instance
         */
        ForecastNoFlyData.prototype.org = "";

        /**
         * ForecastNoFlyData dst.
         * @member {string} dst
         * @memberof veryzhun.ForecastNoFlyData
         * @instance
         */
        ForecastNoFlyData.prototype.dst = "";

        /**
         * ForecastNoFlyData orgTinezone.
         * @member {number} orgTinezone
         * @memberof veryzhun.ForecastNoFlyData
         * @instance
         */
        ForecastNoFlyData.prototype.orgTinezone = 0;

        /**
         * ForecastNoFlyData dstTinezone.
         * @member {number} dstTinezone
         * @memberof veryzhun.ForecastNoFlyData
         * @instance
         */
        ForecastNoFlyData.prototype.dstTinezone = 0;

        /**
         * ForecastNoFlyData scheduledDeptime.
         * @member {number} scheduledDeptime
         * @memberof veryzhun.ForecastNoFlyData
         * @instance
         */
        ForecastNoFlyData.prototype.scheduledDeptime = 0;

        /**
         * ForecastNoFlyData scheduledArrtime.
         * @member {number} scheduledArrtime
         * @memberof veryzhun.ForecastNoFlyData
         * @instance
         */
        ForecastNoFlyData.prototype.scheduledArrtime = 0;

        /**
         * ForecastNoFlyData route.
         * @member {Array.<veryzhun.IForecastFlightLoc>} route
         * @memberof veryzhun.ForecastNoFlyData
         * @instance
         */
        ForecastNoFlyData.prototype.route = $util.emptyArray;

        /**
         * Creates a new ForecastNoFlyData instance using the specified properties.
         * @function create
         * @memberof veryzhun.ForecastNoFlyData
         * @static
         * @param {veryzhun.IForecastNoFlyData=} [properties] Properties to set
         * @returns {veryzhun.ForecastNoFlyData} ForecastNoFlyData instance
         */
        ForecastNoFlyData.create = function create(properties) {
            return new ForecastNoFlyData(properties);
        };

        /**
         * Encodes the specified ForecastNoFlyData message. Does not implicitly {@link veryzhun.ForecastNoFlyData.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.ForecastNoFlyData
         * @static
         * @param {veryzhun.IForecastNoFlyData} message ForecastNoFlyData message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastNoFlyData.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.fnum != null && Object.hasOwnProperty.call(message, "fnum")) {
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.fnum);
            }
            if (message.org != null && Object.hasOwnProperty.call(message, "org")) {
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.org);
            }
            if (message.dst != null && Object.hasOwnProperty.call(message, "dst")) {
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.dst);
            }
            if (message.orgTinezone != null && Object.hasOwnProperty.call(message, "orgTinezone")) {
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.orgTinezone);
            }
            if (message.dstTinezone != null && Object.hasOwnProperty.call(message, "dstTinezone")) {
                writer.uint32(/* id 5, wireType 0 =*/40).int32(message.dstTinezone);
            }
            if (message.scheduledDeptime != null && Object.hasOwnProperty.call(message, "scheduledDeptime")) {
                writer.uint32(/* id 6, wireType 0 =*/48).int32(message.scheduledDeptime);
            }
            if (message.scheduledArrtime != null && Object.hasOwnProperty.call(message, "scheduledArrtime")) {
                writer.uint32(/* id 7, wireType 0 =*/56).int32(message.scheduledArrtime);
            }
            if (message.route != null && message.route.length) {
                for (let i = 0; i < message.route.length; ++i) {
                    $root.veryzhun.ForecastFlightLoc.encode(message.route[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified ForecastNoFlyData message, length delimited. Does not implicitly {@link veryzhun.ForecastNoFlyData.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.ForecastNoFlyData
         * @static
         * @param {veryzhun.IForecastNoFlyData} message ForecastNoFlyData message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastNoFlyData.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a ForecastNoFlyData message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.ForecastNoFlyData
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.ForecastNoFlyData} ForecastNoFlyData
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastNoFlyData.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.ForecastNoFlyData();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.fnum = reader.string();
                        break;
                    }
                    case 2: {
                        message.org = reader.string();
                        break;
                    }
                    case 3: {
                        message.dst = reader.string();
                        break;
                    }
                    case 4: {
                        message.orgTinezone = reader.int32();
                        break;
                    }
                    case 5: {
                        message.dstTinezone = reader.int32();
                        break;
                    }
                    case 6: {
                        message.scheduledDeptime = reader.int32();
                        break;
                    }
                    case 7: {
                        message.scheduledArrtime = reader.int32();
                        break;
                    }
                    case 8: {
                        if (!(message.route && message.route.length)) {
                            message.route = [];
                        }
                        message.route.push($root.veryzhun.ForecastFlightLoc.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a ForecastNoFlyData message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.ForecastNoFlyData
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.ForecastNoFlyData} ForecastNoFlyData
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastNoFlyData.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a ForecastNoFlyData message.
         * @function verify
         * @memberof veryzhun.ForecastNoFlyData
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ForecastNoFlyData.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.fnum != null && message.hasOwnProperty("fnum")) {
                if (!$util.isString(message.fnum)) {
                    return "fnum: string expected";
                }
            }
            if (message.org != null && message.hasOwnProperty("org")) {
                if (!$util.isString(message.org)) {
                    return "org: string expected";
                }
            }
            if (message.dst != null && message.hasOwnProperty("dst")) {
                if (!$util.isString(message.dst)) {
                    return "dst: string expected";
                }
            }
            if (message.orgTinezone != null && message.hasOwnProperty("orgTinezone")) {
                if (!$util.isInteger(message.orgTinezone)) {
                    return "orgTinezone: integer expected";
                }
            }
            if (message.dstTinezone != null && message.hasOwnProperty("dstTinezone")) {
                if (!$util.isInteger(message.dstTinezone)) {
                    return "dstTinezone: integer expected";
                }
            }
            if (message.scheduledDeptime != null && message.hasOwnProperty("scheduledDeptime")) {
                if (!$util.isInteger(message.scheduledDeptime)) {
                    return "scheduledDeptime: integer expected";
                }
            }
            if (message.scheduledArrtime != null && message.hasOwnProperty("scheduledArrtime")) {
                if (!$util.isInteger(message.scheduledArrtime)) {
                    return "scheduledArrtime: integer expected";
                }
            }
            if (message.route != null && message.hasOwnProperty("route")) {
                if (!Array.isArray(message.route)) {
                    return "route: array expected";
                }
                for (let i = 0; i < message.route.length; ++i) {
                    let error = $root.veryzhun.ForecastFlightLoc.verify(message.route[i]);
                    if (error) {
                        return "route." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a ForecastNoFlyData message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.ForecastNoFlyData
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.ForecastNoFlyData} ForecastNoFlyData
         */
        ForecastNoFlyData.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.ForecastNoFlyData) {
                return object;
            }
            let message = new $root.veryzhun.ForecastNoFlyData();
            if (object.fnum != null) {
                message.fnum = String(object.fnum);
            }
            if (object.org != null) {
                message.org = String(object.org);
            }
            if (object.dst != null) {
                message.dst = String(object.dst);
            }
            if (object.orgTinezone != null) {
                message.orgTinezone = object.orgTinezone | 0;
            }
            if (object.dstTinezone != null) {
                message.dstTinezone = object.dstTinezone | 0;
            }
            if (object.scheduledDeptime != null) {
                message.scheduledDeptime = object.scheduledDeptime | 0;
            }
            if (object.scheduledArrtime != null) {
                message.scheduledArrtime = object.scheduledArrtime | 0;
            }
            if (object.route) {
                if (!Array.isArray(object.route)) {
                    throw TypeError(".veryzhun.ForecastNoFlyData.route: array expected");
                }
                message.route = [];
                for (let i = 0; i < object.route.length; ++i) {
                    if (typeof object.route[i] !== "object") {
                        throw TypeError(".veryzhun.ForecastNoFlyData.route: object expected");
                    }
                    message.route[i] = $root.veryzhun.ForecastFlightLoc.fromObject(object.route[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a ForecastNoFlyData message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.ForecastNoFlyData
         * @static
         * @param {veryzhun.ForecastNoFlyData} message ForecastNoFlyData
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ForecastNoFlyData.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.route = [];
            }
            if (options.defaults) {
                object.fnum = "";
                object.org = "";
                object.dst = "";
                object.orgTinezone = 0;
                object.dstTinezone = 0;
                object.scheduledDeptime = 0;
                object.scheduledArrtime = 0;
            }
            if (message.fnum != null && message.hasOwnProperty("fnum")) {
                object.fnum = message.fnum;
            }
            if (message.org != null && message.hasOwnProperty("org")) {
                object.org = message.org;
            }
            if (message.dst != null && message.hasOwnProperty("dst")) {
                object.dst = message.dst;
            }
            if (message.orgTinezone != null && message.hasOwnProperty("orgTinezone")) {
                object.orgTinezone = message.orgTinezone;
            }
            if (message.dstTinezone != null && message.hasOwnProperty("dstTinezone")) {
                object.dstTinezone = message.dstTinezone;
            }
            if (message.scheduledDeptime != null && message.hasOwnProperty("scheduledDeptime")) {
                object.scheduledDeptime = message.scheduledDeptime;
            }
            if (message.scheduledArrtime != null && message.hasOwnProperty("scheduledArrtime")) {
                object.scheduledArrtime = message.scheduledArrtime;
            }
            if (message.route && message.route.length) {
                object.route = [];
                for (let j = 0; j < message.route.length; ++j) {
                    object.route[j] = $root.veryzhun.ForecastFlightLoc.toObject(message.route[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this ForecastNoFlyData to JSON.
         * @function toJSON
         * @memberof veryzhun.ForecastNoFlyData
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        ForecastNoFlyData.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for ForecastNoFlyData
         * @function getTypeUrl
         * @memberof veryzhun.ForecastNoFlyData
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        ForecastNoFlyData.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.ForecastNoFlyData";
        };

        return ForecastNoFlyData;
    })();

    veryzhun.ForecastNoFly = (function () {

        /**
         * Properties of a ForecastNoFly.
         * @memberof veryzhun
         * @interface IForecastNoFly
         * @property {Array.<veryzhun.IForecastNoFlyData>|null} [data] ForecastNoFly data
         */

        /**
         * Constructs a new ForecastNoFly.
         * @memberof veryzhun
         * @classdesc Represents a ForecastNoFly.
         * @implements IForecastNoFly
         * @constructor
         * @param {veryzhun.IForecastNoFly=} [properties] Properties to set
         */
        function ForecastNoFly(properties) {
            this.data = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * ForecastNoFly data.
         * @member {Array.<veryzhun.IForecastNoFlyData>} data
         * @memberof veryzhun.ForecastNoFly
         * @instance
         */
        ForecastNoFly.prototype.data = $util.emptyArray;

        /**
         * Creates a new ForecastNoFly instance using the specified properties.
         * @function create
         * @memberof veryzhun.ForecastNoFly
         * @static
         * @param {veryzhun.IForecastNoFly=} [properties] Properties to set
         * @returns {veryzhun.ForecastNoFly} ForecastNoFly instance
         */
        ForecastNoFly.create = function create(properties) {
            return new ForecastNoFly(properties);
        };

        /**
         * Encodes the specified ForecastNoFly message. Does not implicitly {@link veryzhun.ForecastNoFly.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.ForecastNoFly
         * @static
         * @param {veryzhun.IForecastNoFly} message ForecastNoFly message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastNoFly.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.data != null && message.data.length) {
                for (let i = 0; i < message.data.length; ++i) {
                    $root.veryzhun.ForecastNoFlyData.encode(message.data[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified ForecastNoFly message, length delimited. Does not implicitly {@link veryzhun.ForecastNoFly.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.ForecastNoFly
         * @static
         * @param {veryzhun.IForecastNoFly} message ForecastNoFly message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ForecastNoFly.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a ForecastNoFly message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.ForecastNoFly
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.ForecastNoFly} ForecastNoFly
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastNoFly.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.ForecastNoFly();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        if (!(message.data && message.data.length)) {
                            message.data = [];
                        }
                        message.data.push($root.veryzhun.ForecastNoFlyData.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a ForecastNoFly message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.ForecastNoFly
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.ForecastNoFly} ForecastNoFly
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForecastNoFly.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a ForecastNoFly message.
         * @function verify
         * @memberof veryzhun.ForecastNoFly
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ForecastNoFly.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.data != null && message.hasOwnProperty("data")) {
                if (!Array.isArray(message.data)) {
                    return "data: array expected";
                }
                for (let i = 0; i < message.data.length; ++i) {
                    let error = $root.veryzhun.ForecastNoFlyData.verify(message.data[i]);
                    if (error) {
                        return "data." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a ForecastNoFly message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.ForecastNoFly
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.ForecastNoFly} ForecastNoFly
         */
        ForecastNoFly.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.ForecastNoFly) {
                return object;
            }
            let message = new $root.veryzhun.ForecastNoFly();
            if (object.data) {
                if (!Array.isArray(object.data)) {
                    throw TypeError(".veryzhun.ForecastNoFly.data: array expected");
                }
                message.data = [];
                for (let i = 0; i < object.data.length; ++i) {
                    if (typeof object.data[i] !== "object") {
                        throw TypeError(".veryzhun.ForecastNoFly.data: object expected");
                    }
                    message.data[i] = $root.veryzhun.ForecastNoFlyData.fromObject(object.data[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a ForecastNoFly message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.ForecastNoFly
         * @static
         * @param {veryzhun.ForecastNoFly} message ForecastNoFly
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ForecastNoFly.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.data = [];
            }
            if (message.data && message.data.length) {
                object.data = [];
                for (let j = 0; j < message.data.length; ++j) {
                    object.data[j] = $root.veryzhun.ForecastNoFlyData.toObject(message.data[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this ForecastNoFly to JSON.
         * @function toJSON
         * @memberof veryzhun.ForecastNoFly
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        ForecastNoFly.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for ForecastNoFly
         * @function getTypeUrl
         * @memberof veryzhun.ForecastNoFly
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        ForecastNoFly.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.ForecastNoFly";
        };

        return ForecastNoFly;
    })();

    veryzhun.U3DForecastFlightLoc = (function () {

        /**
         * Properties of a U3DForecastFlightLoc.
         * @memberof veryzhun
         * @interface IU3DForecastFlightLoc
         * @property {number|null} [flyOverTime] U3DForecastFlightLoc flyOverTime
         * @property {number|null} [lat] U3DForecastFlightLoc lat
         * @property {number|null} [lon] U3DForecastFlightLoc lon
         * @property {string|null} [name] U3DForecastFlightLoc name
         * @property {number|null} [altitude] U3DForecastFlightLoc altitude
         */

        /**
         * Constructs a new U3DForecastFlightLoc.
         * @memberof veryzhun
         * @classdesc Represents a U3DForecastFlightLoc.
         * @implements IU3DForecastFlightLoc
         * @constructor
         * @param {veryzhun.IU3DForecastFlightLoc=} [properties] Properties to set
         */
        function U3DForecastFlightLoc(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * U3DForecastFlightLoc flyOverTime.
         * @member {number} flyOverTime
         * @memberof veryzhun.U3DForecastFlightLoc
         * @instance
         */
        U3DForecastFlightLoc.prototype.flyOverTime = 0;

        /**
         * U3DForecastFlightLoc lat.
         * @member {number} lat
         * @memberof veryzhun.U3DForecastFlightLoc
         * @instance
         */
        U3DForecastFlightLoc.prototype.lat = 0;

        /**
         * U3DForecastFlightLoc lon.
         * @member {number} lon
         * @memberof veryzhun.U3DForecastFlightLoc
         * @instance
         */
        U3DForecastFlightLoc.prototype.lon = 0;

        /**
         * U3DForecastFlightLoc name.
         * @member {string} name
         * @memberof veryzhun.U3DForecastFlightLoc
         * @instance
         */
        U3DForecastFlightLoc.prototype.name = "";

        /**
         * U3DForecastFlightLoc altitude.
         * @member {number} altitude
         * @memberof veryzhun.U3DForecastFlightLoc
         * @instance
         */
        U3DForecastFlightLoc.prototype.altitude = 0;

        /**
         * Creates a new U3DForecastFlightLoc instance using the specified properties.
         * @function create
         * @memberof veryzhun.U3DForecastFlightLoc
         * @static
         * @param {veryzhun.IU3DForecastFlightLoc=} [properties] Properties to set
         * @returns {veryzhun.U3DForecastFlightLoc} U3DForecastFlightLoc instance
         */
        U3DForecastFlightLoc.create = function create(properties) {
            return new U3DForecastFlightLoc(properties);
        };

        /**
         * Encodes the specified U3DForecastFlightLoc message. Does not implicitly {@link veryzhun.U3DForecastFlightLoc.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.U3DForecastFlightLoc
         * @static
         * @param {veryzhun.IU3DForecastFlightLoc} message U3DForecastFlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DForecastFlightLoc.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.flyOverTime != null && Object.hasOwnProperty.call(message, "flyOverTime")) {
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.flyOverTime);
            }
            if (message.lat != null && Object.hasOwnProperty.call(message, "lat")) {
                writer.uint32(/* id 2, wireType 1 =*/17).double(message.lat);
            }
            if (message.lon != null && Object.hasOwnProperty.call(message, "lon")) {
                writer.uint32(/* id 3, wireType 1 =*/25).double(message.lon);
            }
            if (message.name != null && Object.hasOwnProperty.call(message, "name")) {
                writer.uint32(/* id 4, wireType 2 =*/34).string(message.name);
            }
            if (message.altitude != null && Object.hasOwnProperty.call(message, "altitude")) {
                writer.uint32(/* id 5, wireType 1 =*/41).double(message.altitude);
            }
            return writer;
        };

        /**
         * Encodes the specified U3DForecastFlightLoc message, length delimited. Does not implicitly {@link veryzhun.U3DForecastFlightLoc.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.U3DForecastFlightLoc
         * @static
         * @param {veryzhun.IU3DForecastFlightLoc} message U3DForecastFlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DForecastFlightLoc.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a U3DForecastFlightLoc message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.U3DForecastFlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.U3DForecastFlightLoc} U3DForecastFlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DForecastFlightLoc.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.U3DForecastFlightLoc();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.flyOverTime = reader.int32();
                        break;
                    }
                    case 2: {
                        message.lat = reader.double();
                        break;
                    }
                    case 3: {
                        message.lon = reader.double();
                        break;
                    }
                    case 4: {
                        message.name = reader.string();
                        break;
                    }
                    case 5: {
                        message.altitude = reader.double();
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a U3DForecastFlightLoc message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.U3DForecastFlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.U3DForecastFlightLoc} U3DForecastFlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DForecastFlightLoc.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a U3DForecastFlightLoc message.
         * @function verify
         * @memberof veryzhun.U3DForecastFlightLoc
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        U3DForecastFlightLoc.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.flyOverTime != null && message.hasOwnProperty("flyOverTime")) {
                if (!$util.isInteger(message.flyOverTime)) {
                    return "flyOverTime: integer expected";
                }
            }
            if (message.lat != null && message.hasOwnProperty("lat")) {
                if (typeof message.lat !== "number") {
                    return "lat: number expected";
                }
            }
            if (message.lon != null && message.hasOwnProperty("lon")) {
                if (typeof message.lon !== "number") {
                    return "lon: number expected";
                }
            }
            if (message.name != null && message.hasOwnProperty("name")) {
                if (!$util.isString(message.name)) {
                    return "name: string expected";
                }
            }
            if (message.altitude != null && message.hasOwnProperty("altitude")) {
                if (typeof message.altitude !== "number") {
                    return "altitude: number expected";
                }
            }
            return null;
        };

        /**
         * Creates a U3DForecastFlightLoc message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.U3DForecastFlightLoc
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.U3DForecastFlightLoc} U3DForecastFlightLoc
         */
        U3DForecastFlightLoc.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.U3DForecastFlightLoc) {
                return object;
            }
            let message = new $root.veryzhun.U3DForecastFlightLoc();
            if (object.flyOverTime != null) {
                message.flyOverTime = object.flyOverTime | 0;
            }
            if (object.lat != null) {
                message.lat = Number(object.lat);
            }
            if (object.lon != null) {
                message.lon = Number(object.lon);
            }
            if (object.name != null) {
                message.name = String(object.name);
            }
            if (object.altitude != null) {
                message.altitude = Number(object.altitude);
            }
            return message;
        };

        /**
         * Creates a plain object from a U3DForecastFlightLoc message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.U3DForecastFlightLoc
         * @static
         * @param {veryzhun.U3DForecastFlightLoc} message U3DForecastFlightLoc
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        U3DForecastFlightLoc.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.flyOverTime = 0;
                object.lat = 0;
                object.lon = 0;
                object.name = "";
                object.altitude = 0;
            }
            if (message.flyOverTime != null && message.hasOwnProperty("flyOverTime")) {
                object.flyOverTime = message.flyOverTime;
            }
            if (message.lat != null && message.hasOwnProperty("lat")) {
                object.lat = options.json && !isFinite(message.lat) ? String(message.lat) : message.lat;
            }
            if (message.lon != null && message.hasOwnProperty("lon")) {
                object.lon = options.json && !isFinite(message.lon) ? String(message.lon) : message.lon;
            }
            if (message.name != null && message.hasOwnProperty("name")) {
                object.name = message.name;
            }
            if (message.altitude != null && message.hasOwnProperty("altitude")) {
                object.altitude = options.json && !isFinite(message.altitude) ? String(message.altitude) : message.altitude;
            }
            return object;
        };

        /**
         * Converts this U3DForecastFlightLoc to JSON.
         * @function toJSON
         * @memberof veryzhun.U3DForecastFlightLoc
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        U3DForecastFlightLoc.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for U3DForecastFlightLoc
         * @function getTypeUrl
         * @memberof veryzhun.U3DForecastFlightLoc
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        U3DForecastFlightLoc.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.U3DForecastFlightLoc";
        };

        return U3DForecastFlightLoc;
    })();

    veryzhun.U3DForecastTrace = (function () {

        /**
         * Properties of a U3DForecastTrace.
         * @memberof veryzhun
         * @interface IU3DForecastTrace
         * @property {number|null} [source] U3DForecastTrace source
         * @property {Array.<veryzhun.IU3DForecastFlightLoc>|null} [path] U3DForecastTrace path
         */

        /**
         * Constructs a new U3DForecastTrace.
         * @memberof veryzhun
         * @classdesc Represents a U3DForecastTrace.
         * @implements IU3DForecastTrace
         * @constructor
         * @param {veryzhun.IU3DForecastTrace=} [properties] Properties to set
         */
        function U3DForecastTrace(properties) {
            this.path = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * U3DForecastTrace source.
         * @member {number} source
         * @memberof veryzhun.U3DForecastTrace
         * @instance
         */
        U3DForecastTrace.prototype.source = 0;

        /**
         * U3DForecastTrace path.
         * @member {Array.<veryzhun.IU3DForecastFlightLoc>} path
         * @memberof veryzhun.U3DForecastTrace
         * @instance
         */
        U3DForecastTrace.prototype.path = $util.emptyArray;

        /**
         * Creates a new U3DForecastTrace instance using the specified properties.
         * @function create
         * @memberof veryzhun.U3DForecastTrace
         * @static
         * @param {veryzhun.IU3DForecastTrace=} [properties] Properties to set
         * @returns {veryzhun.U3DForecastTrace} U3DForecastTrace instance
         */
        U3DForecastTrace.create = function create(properties) {
            return new U3DForecastTrace(properties);
        };

        /**
         * Encodes the specified U3DForecastTrace message. Does not implicitly {@link veryzhun.U3DForecastTrace.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.U3DForecastTrace
         * @static
         * @param {veryzhun.IU3DForecastTrace} message U3DForecastTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DForecastTrace.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.source != null && Object.hasOwnProperty.call(message, "source")) {
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.source);
            }
            if (message.path != null && message.path.length) {
                for (let i = 0; i < message.path.length; ++i) {
                    $root.veryzhun.U3DForecastFlightLoc.encode(message.path[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified U3DForecastTrace message, length delimited. Does not implicitly {@link veryzhun.U3DForecastTrace.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.U3DForecastTrace
         * @static
         * @param {veryzhun.IU3DForecastTrace} message U3DForecastTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DForecastTrace.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a U3DForecastTrace message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.U3DForecastTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.U3DForecastTrace} U3DForecastTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DForecastTrace.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.U3DForecastTrace();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.source = reader.int32();
                        break;
                    }
                    case 2: {
                        if (!(message.path && message.path.length)) {
                            message.path = [];
                        }
                        message.path.push($root.veryzhun.U3DForecastFlightLoc.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a U3DForecastTrace message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.U3DForecastTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.U3DForecastTrace} U3DForecastTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DForecastTrace.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a U3DForecastTrace message.
         * @function verify
         * @memberof veryzhun.U3DForecastTrace
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        U3DForecastTrace.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.source != null && message.hasOwnProperty("source")) {
                if (!$util.isInteger(message.source)) {
                    return "source: integer expected";
                }
            }
            if (message.path != null && message.hasOwnProperty("path")) {
                if (!Array.isArray(message.path)) {
                    return "path: array expected";
                }
                for (let i = 0; i < message.path.length; ++i) {
                    let error = $root.veryzhun.U3DForecastFlightLoc.verify(message.path[i]);
                    if (error) {
                        return "path." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a U3DForecastTrace message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.U3DForecastTrace
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.U3DForecastTrace} U3DForecastTrace
         */
        U3DForecastTrace.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.U3DForecastTrace) {
                return object;
            }
            let message = new $root.veryzhun.U3DForecastTrace();
            if (object.source != null) {
                message.source = object.source | 0;
            }
            if (object.path) {
                if (!Array.isArray(object.path)) {
                    throw TypeError(".veryzhun.U3DForecastTrace.path: array expected");
                }
                message.path = [];
                for (let i = 0; i < object.path.length; ++i) {
                    if (typeof object.path[i] !== "object") {
                        throw TypeError(".veryzhun.U3DForecastTrace.path: object expected");
                    }
                    message.path[i] = $root.veryzhun.U3DForecastFlightLoc.fromObject(object.path[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a U3DForecastTrace message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.U3DForecastTrace
         * @static
         * @param {veryzhun.U3DForecastTrace} message U3DForecastTrace
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        U3DForecastTrace.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.path = [];
            }
            if (options.defaults) {
                object.source = 0;
            }
            if (message.source != null && message.hasOwnProperty("source")) {
                object.source = message.source;
            }
            if (message.path && message.path.length) {
                object.path = [];
                for (let j = 0; j < message.path.length; ++j) {
                    object.path[j] = $root.veryzhun.U3DForecastFlightLoc.toObject(message.path[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this U3DForecastTrace to JSON.
         * @function toJSON
         * @memberof veryzhun.U3DForecastTrace
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        U3DForecastTrace.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for U3DForecastTrace
         * @function getTypeUrl
         * @memberof veryzhun.U3DForecastTrace
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        U3DForecastTrace.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.U3DForecastTrace";
        };

        return U3DForecastTrace;
    })();

    veryzhun.FlightBase = (function () {

        /**
         * Properties of a FlightBase.
         * @memberof veryzhun
         * @interface IFlightBase
         * @property {string|null} [airname] FlightBase airname
         * @property {string|null} [airCName] FlightBase airCName
         * @property {string|null} [airShortName] FlightBase airShortName
         * @property {string|null} [airIATA] FlightBase airIATA
         * @property {string|null} [airICAO] FlightBase airICAO
         * @property {string|null} [fnum2] FlightBase fnum2
         * @property {string|null} [fnum3] FlightBase fnum3
         * @property {string|null} [forg] FlightBase forg
         * @property {string|null} [forgAptName] FlightBase forgAptName
         * @property {string|null} [forgAptCname] FlightBase forgAptCname
         * @property {string|null} [forgAptICAO] FlightBase forgAptICAO
         * @property {number|null} [forgAptLon] FlightBase forgAptLon
         * @property {number|null} [forgAptLat] FlightBase forgAptLat
         * @property {string|null} [fdst] FlightBase fdst
         * @property {string|null} [fdstAptName] FlightBase fdstAptName
         * @property {string|null} [fdstAptCname] FlightBase fdstAptCname
         * @property {string|null} [fdstAptICAO] FlightBase fdstAptICAO
         * @property {number|null} [fdstAptLon] FlightBase fdstAptLon
         * @property {number|null} [fdstAptLat] FlightBase fdstAptLat
         * @property {number|null} [scheduledDeptime] FlightBase scheduledDeptime
         * @property {number|null} [scheduledArrtime] FlightBase scheduledArrtime
         * @property {number|null} [actualDeptime] FlightBase actualDeptime
         * @property {number|null} [actualArrtime] FlightBase actualArrtime
         * @property {number|null} [estimateArrtime] FlightBase estimateArrtime
         * @property {string|null} [atype] FlightBase atype
         * @property {string|null} [atypename] FlightBase atypename
         * @property {string|null} [aircraftImageUrl] FlightBase aircraftImageUrl
         * @property {string|null} [dynamicId] FlightBase dynamicId
         * @property {string|null} [aircraftImageId] FlightBase aircraftImageId
         * @property {number|null} [orgTinezone] FlightBase orgTinezone
         * @property {number|null} [dstTinezone] FlightBase dstTinezone
         * @property {string|null} [icaoId] FlightBase icaoId
         */

        /**
         * Constructs a new FlightBase.
         * @memberof veryzhun
         * @classdesc Represents a FlightBase.
         * @implements IFlightBase
         * @constructor
         * @param {veryzhun.IFlightBase=} [properties] Properties to set
         */
        function FlightBase(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * FlightBase airname.
         * @member {string} airname
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.airname = "";

        /**
         * FlightBase airCName.
         * @member {string} airCName
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.airCName = "";

        /**
         * FlightBase airShortName.
         * @member {string} airShortName
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.airShortName = "";

        /**
         * FlightBase airIATA.
         * @member {string} airIATA
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.airIATA = "";

        /**
         * FlightBase airICAO.
         * @member {string} airICAO
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.airICAO = "";

        /**
         * FlightBase fnum2.
         * @member {string} fnum2
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.fnum2 = "";

        /**
         * FlightBase fnum3.
         * @member {string} fnum3
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.fnum3 = "";

        /**
         * FlightBase forg.
         * @member {string} forg
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.forg = "";

        /**
         * FlightBase forgAptName.
         * @member {string} forgAptName
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.forgAptName = "";

        /**
         * FlightBase forgAptCname.
         * @member {string} forgAptCname
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.forgAptCname = "";

        /**
         * FlightBase forgAptICAO.
         * @member {string} forgAptICAO
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.forgAptICAO = "";

        /**
         * FlightBase forgAptLon.
         * @member {number} forgAptLon
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.forgAptLon = 0;

        /**
         * FlightBase forgAptLat.
         * @member {number} forgAptLat
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.forgAptLat = 0;

        /**
         * FlightBase fdst.
         * @member {string} fdst
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.fdst = "";

        /**
         * FlightBase fdstAptName.
         * @member {string} fdstAptName
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.fdstAptName = "";

        /**
         * FlightBase fdstAptCname.
         * @member {string} fdstAptCname
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.fdstAptCname = "";

        /**
         * FlightBase fdstAptICAO.
         * @member {string} fdstAptICAO
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.fdstAptICAO = "";

        /**
         * FlightBase fdstAptLon.
         * @member {number} fdstAptLon
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.fdstAptLon = 0;

        /**
         * FlightBase fdstAptLat.
         * @member {number} fdstAptLat
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.fdstAptLat = 0;

        /**
         * FlightBase scheduledDeptime.
         * @member {number} scheduledDeptime
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.scheduledDeptime = 0;

        /**
         * FlightBase scheduledArrtime.
         * @member {number} scheduledArrtime
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.scheduledArrtime = 0;

        /**
         * FlightBase actualDeptime.
         * @member {number} actualDeptime
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.actualDeptime = 0;

        /**
         * FlightBase actualArrtime.
         * @member {number} actualArrtime
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.actualArrtime = 0;

        /**
         * FlightBase estimateArrtime.
         * @member {number} estimateArrtime
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.estimateArrtime = 0;

        /**
         * FlightBase atype.
         * @member {string} atype
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.atype = "";

        /**
         * FlightBase atypename.
         * @member {string} atypename
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.atypename = "";

        /**
         * FlightBase aircraftImageUrl.
         * @member {string} aircraftImageUrl
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.aircraftImageUrl = "";

        /**
         * FlightBase dynamicId.
         * @member {string} dynamicId
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.dynamicId = "";

        /**
         * FlightBase aircraftImageId.
         * @member {string} aircraftImageId
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.aircraftImageId = "";

        /**
         * FlightBase orgTinezone.
         * @member {number} orgTinezone
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.orgTinezone = 0;

        /**
         * FlightBase dstTinezone.
         * @member {number} dstTinezone
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.dstTinezone = 0;

        /**
         * FlightBase icaoId.
         * @member {string} icaoId
         * @memberof veryzhun.FlightBase
         * @instance
         */
        FlightBase.prototype.icaoId = "";

        /**
         * Creates a new FlightBase instance using the specified properties.
         * @function create
         * @memberof veryzhun.FlightBase
         * @static
         * @param {veryzhun.IFlightBase=} [properties] Properties to set
         * @returns {veryzhun.FlightBase} FlightBase instance
         */
        FlightBase.create = function create(properties) {
            return new FlightBase(properties);
        };

        /**
         * Encodes the specified FlightBase message. Does not implicitly {@link veryzhun.FlightBase.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.FlightBase
         * @static
         * @param {veryzhun.IFlightBase} message FlightBase message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightBase.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.airname != null && Object.hasOwnProperty.call(message, "airname")) {
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.airname);
            }
            if (message.airCName != null && Object.hasOwnProperty.call(message, "airCName")) {
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.airCName);
            }
            if (message.airShortName != null && Object.hasOwnProperty.call(message, "airShortName")) {
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.airShortName);
            }
            if (message.airIATA != null && Object.hasOwnProperty.call(message, "airIATA")) {
                writer.uint32(/* id 4, wireType 2 =*/34).string(message.airIATA);
            }
            if (message.airICAO != null && Object.hasOwnProperty.call(message, "airICAO")) {
                writer.uint32(/* id 5, wireType 2 =*/42).string(message.airICAO);
            }
            if (message.fnum2 != null && Object.hasOwnProperty.call(message, "fnum2")) {
                writer.uint32(/* id 6, wireType 2 =*/50).string(message.fnum2);
            }
            if (message.fnum3 != null && Object.hasOwnProperty.call(message, "fnum3")) {
                writer.uint32(/* id 7, wireType 2 =*/58).string(message.fnum3);
            }
            if (message.forg != null && Object.hasOwnProperty.call(message, "forg")) {
                writer.uint32(/* id 8, wireType 2 =*/66).string(message.forg);
            }
            if (message.forgAptName != null && Object.hasOwnProperty.call(message, "forgAptName")) {
                writer.uint32(/* id 9, wireType 2 =*/74).string(message.forgAptName);
            }
            if (message.forgAptCname != null && Object.hasOwnProperty.call(message, "forgAptCname")) {
                writer.uint32(/* id 10, wireType 2 =*/82).string(message.forgAptCname);
            }
            if (message.forgAptICAO != null && Object.hasOwnProperty.call(message, "forgAptICAO")) {
                writer.uint32(/* id 11, wireType 2 =*/90).string(message.forgAptICAO);
            }
            if (message.forgAptLon != null && Object.hasOwnProperty.call(message, "forgAptLon")) {
                writer.uint32(/* id 12, wireType 1 =*/97).double(message.forgAptLon);
            }
            if (message.forgAptLat != null && Object.hasOwnProperty.call(message, "forgAptLat")) {
                writer.uint32(/* id 13, wireType 1 =*/105).double(message.forgAptLat);
            }
            if (message.fdst != null && Object.hasOwnProperty.call(message, "fdst")) {
                writer.uint32(/* id 14, wireType 2 =*/114).string(message.fdst);
            }
            if (message.fdstAptName != null && Object.hasOwnProperty.call(message, "fdstAptName")) {
                writer.uint32(/* id 15, wireType 2 =*/122).string(message.fdstAptName);
            }
            if (message.fdstAptCname != null && Object.hasOwnProperty.call(message, "fdstAptCname")) {
                writer.uint32(/* id 16, wireType 2 =*/130).string(message.fdstAptCname);
            }
            if (message.fdstAptICAO != null && Object.hasOwnProperty.call(message, "fdstAptICAO")) {
                writer.uint32(/* id 17, wireType 2 =*/138).string(message.fdstAptICAO);
            }
            if (message.fdstAptLon != null && Object.hasOwnProperty.call(message, "fdstAptLon")) {
                writer.uint32(/* id 18, wireType 1 =*/145).double(message.fdstAptLon);
            }
            if (message.fdstAptLat != null && Object.hasOwnProperty.call(message, "fdstAptLat")) {
                writer.uint32(/* id 19, wireType 1 =*/153).double(message.fdstAptLat);
            }
            if (message.scheduledDeptime != null && Object.hasOwnProperty.call(message, "scheduledDeptime")) {
                writer.uint32(/* id 20, wireType 0 =*/160).int32(message.scheduledDeptime);
            }
            if (message.scheduledArrtime != null && Object.hasOwnProperty.call(message, "scheduledArrtime")) {
                writer.uint32(/* id 21, wireType 0 =*/168).int32(message.scheduledArrtime);
            }
            if (message.actualDeptime != null && Object.hasOwnProperty.call(message, "actualDeptime")) {
                writer.uint32(/* id 22, wireType 0 =*/176).int32(message.actualDeptime);
            }
            if (message.actualArrtime != null && Object.hasOwnProperty.call(message, "actualArrtime")) {
                writer.uint32(/* id 23, wireType 0 =*/184).int32(message.actualArrtime);
            }
            if (message.estimateArrtime != null && Object.hasOwnProperty.call(message, "estimateArrtime")) {
                writer.uint32(/* id 24, wireType 0 =*/192).int32(message.estimateArrtime);
            }
            if (message.atype != null && Object.hasOwnProperty.call(message, "atype")) {
                writer.uint32(/* id 25, wireType 2 =*/202).string(message.atype);
            }
            if (message.atypename != null && Object.hasOwnProperty.call(message, "atypename")) {
                writer.uint32(/* id 26, wireType 2 =*/210).string(message.atypename);
            }
            if (message.aircraftImageUrl != null && Object.hasOwnProperty.call(message, "aircraftImageUrl")) {
                writer.uint32(/* id 27, wireType 2 =*/218).string(message.aircraftImageUrl);
            }
            if (message.dynamicId != null && Object.hasOwnProperty.call(message, "dynamicId")) {
                writer.uint32(/* id 28, wireType 2 =*/226).string(message.dynamicId);
            }
            if (message.aircraftImageId != null && Object.hasOwnProperty.call(message, "aircraftImageId")) {
                writer.uint32(/* id 29, wireType 2 =*/234).string(message.aircraftImageId);
            }
            if (message.orgTinezone != null && Object.hasOwnProperty.call(message, "orgTinezone")) {
                writer.uint32(/* id 30, wireType 0 =*/240).int32(message.orgTinezone);
            }
            if (message.dstTinezone != null && Object.hasOwnProperty.call(message, "dstTinezone")) {
                writer.uint32(/* id 31, wireType 0 =*/248).int32(message.dstTinezone);
            }
            if (message.icaoId != null && Object.hasOwnProperty.call(message, "icaoId")) {
                writer.uint32(/* id 32, wireType 2 =*/258).string(message.icaoId);
            }
            return writer;
        };

        /**
         * Encodes the specified FlightBase message, length delimited. Does not implicitly {@link veryzhun.FlightBase.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.FlightBase
         * @static
         * @param {veryzhun.IFlightBase} message FlightBase message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightBase.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a FlightBase message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.FlightBase
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.FlightBase} FlightBase
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightBase.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.FlightBase();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.airname = reader.string();
                        break;
                    }
                    case 2: {
                        message.airCName = reader.string();
                        break;
                    }
                    case 3: {
                        message.airShortName = reader.string();
                        break;
                    }
                    case 4: {
                        message.airIATA = reader.string();
                        break;
                    }
                    case 5: {
                        message.airICAO = reader.string();
                        break;
                    }
                    case 6: {
                        message.fnum2 = reader.string();
                        break;
                    }
                    case 7: {
                        message.fnum3 = reader.string();
                        break;
                    }
                    case 8: {
                        message.forg = reader.string();
                        break;
                    }
                    case 9: {
                        message.forgAptName = reader.string();
                        break;
                    }
                    case 10: {
                        message.forgAptCname = reader.string();
                        break;
                    }
                    case 11: {
                        message.forgAptICAO = reader.string();
                        break;
                    }
                    case 12: {
                        message.forgAptLon = reader.double();
                        break;
                    }
                    case 13: {
                        message.forgAptLat = reader.double();
                        break;
                    }
                    case 14: {
                        message.fdst = reader.string();
                        break;
                    }
                    case 15: {
                        message.fdstAptName = reader.string();
                        break;
                    }
                    case 16: {
                        message.fdstAptCname = reader.string();
                        break;
                    }
                    case 17: {
                        message.fdstAptICAO = reader.string();
                        break;
                    }
                    case 18: {
                        message.fdstAptLon = reader.double();
                        break;
                    }
                    case 19: {
                        message.fdstAptLat = reader.double();
                        break;
                    }
                    case 20: {
                        message.scheduledDeptime = reader.int32();
                        break;
                    }
                    case 21: {
                        message.scheduledArrtime = reader.int32();
                        break;
                    }
                    case 22: {
                        message.actualDeptime = reader.int32();
                        break;
                    }
                    case 23: {
                        message.actualArrtime = reader.int32();
                        break;
                    }
                    case 24: {
                        message.estimateArrtime = reader.int32();
                        break;
                    }
                    case 25: {
                        message.atype = reader.string();
                        break;
                    }
                    case 26: {
                        message.atypename = reader.string();
                        break;
                    }
                    case 27: {
                        message.aircraftImageUrl = reader.string();
                        break;
                    }
                    case 28: {
                        message.dynamicId = reader.string();
                        break;
                    }
                    case 29: {
                        message.aircraftImageId = reader.string();
                        break;
                    }
                    case 30: {
                        message.orgTinezone = reader.int32();
                        break;
                    }
                    case 31: {
                        message.dstTinezone = reader.int32();
                        break;
                    }
                    case 32: {
                        message.icaoId = reader.string();
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a FlightBase message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.FlightBase
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.FlightBase} FlightBase
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightBase.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a FlightBase message.
         * @function verify
         * @memberof veryzhun.FlightBase
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        FlightBase.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.airname != null && message.hasOwnProperty("airname")) {
                if (!$util.isString(message.airname)) {
                    return "airname: string expected";
                }
            }
            if (message.airCName != null && message.hasOwnProperty("airCName")) {
                if (!$util.isString(message.airCName)) {
                    return "airCName: string expected";
                }
            }
            if (message.airShortName != null && message.hasOwnProperty("airShortName")) {
                if (!$util.isString(message.airShortName)) {
                    return "airShortName: string expected";
                }
            }
            if (message.airIATA != null && message.hasOwnProperty("airIATA")) {
                if (!$util.isString(message.airIATA)) {
                    return "airIATA: string expected";
                }
            }
            if (message.airICAO != null && message.hasOwnProperty("airICAO")) {
                if (!$util.isString(message.airICAO)) {
                    return "airICAO: string expected";
                }
            }
            if (message.fnum2 != null && message.hasOwnProperty("fnum2")) {
                if (!$util.isString(message.fnum2)) {
                    return "fnum2: string expected";
                }
            }
            if (message.fnum3 != null && message.hasOwnProperty("fnum3")) {
                if (!$util.isString(message.fnum3)) {
                    return "fnum3: string expected";
                }
            }
            if (message.forg != null && message.hasOwnProperty("forg")) {
                if (!$util.isString(message.forg)) {
                    return "forg: string expected";
                }
            }
            if (message.forgAptName != null && message.hasOwnProperty("forgAptName")) {
                if (!$util.isString(message.forgAptName)) {
                    return "forgAptName: string expected";
                }
            }
            if (message.forgAptCname != null && message.hasOwnProperty("forgAptCname")) {
                if (!$util.isString(message.forgAptCname)) {
                    return "forgAptCname: string expected";
                }
            }
            if (message.forgAptICAO != null && message.hasOwnProperty("forgAptICAO")) {
                if (!$util.isString(message.forgAptICAO)) {
                    return "forgAptICAO: string expected";
                }
            }
            if (message.forgAptLon != null && message.hasOwnProperty("forgAptLon")) {
                if (typeof message.forgAptLon !== "number") {
                    return "forgAptLon: number expected";
                }
            }
            if (message.forgAptLat != null && message.hasOwnProperty("forgAptLat")) {
                if (typeof message.forgAptLat !== "number") {
                    return "forgAptLat: number expected";
                }
            }
            if (message.fdst != null && message.hasOwnProperty("fdst")) {
                if (!$util.isString(message.fdst)) {
                    return "fdst: string expected";
                }
            }
            if (message.fdstAptName != null && message.hasOwnProperty("fdstAptName")) {
                if (!$util.isString(message.fdstAptName)) {
                    return "fdstAptName: string expected";
                }
            }
            if (message.fdstAptCname != null && message.hasOwnProperty("fdstAptCname")) {
                if (!$util.isString(message.fdstAptCname)) {
                    return "fdstAptCname: string expected";
                }
            }
            if (message.fdstAptICAO != null && message.hasOwnProperty("fdstAptICAO")) {
                if (!$util.isString(message.fdstAptICAO)) {
                    return "fdstAptICAO: string expected";
                }
            }
            if (message.fdstAptLon != null && message.hasOwnProperty("fdstAptLon")) {
                if (typeof message.fdstAptLon !== "number") {
                    return "fdstAptLon: number expected";
                }
            }
            if (message.fdstAptLat != null && message.hasOwnProperty("fdstAptLat")) {
                if (typeof message.fdstAptLat !== "number") {
                    return "fdstAptLat: number expected";
                }
            }
            if (message.scheduledDeptime != null && message.hasOwnProperty("scheduledDeptime")) {
                if (!$util.isInteger(message.scheduledDeptime)) {
                    return "scheduledDeptime: integer expected";
                }
            }
            if (message.scheduledArrtime != null && message.hasOwnProperty("scheduledArrtime")) {
                if (!$util.isInteger(message.scheduledArrtime)) {
                    return "scheduledArrtime: integer expected";
                }
            }
            if (message.actualDeptime != null && message.hasOwnProperty("actualDeptime")) {
                if (!$util.isInteger(message.actualDeptime)) {
                    return "actualDeptime: integer expected";
                }
            }
            if (message.actualArrtime != null && message.hasOwnProperty("actualArrtime")) {
                if (!$util.isInteger(message.actualArrtime)) {
                    return "actualArrtime: integer expected";
                }
            }
            if (message.estimateArrtime != null && message.hasOwnProperty("estimateArrtime")) {
                if (!$util.isInteger(message.estimateArrtime)) {
                    return "estimateArrtime: integer expected";
                }
            }
            if (message.atype != null && message.hasOwnProperty("atype")) {
                if (!$util.isString(message.atype)) {
                    return "atype: string expected";
                }
            }
            if (message.atypename != null && message.hasOwnProperty("atypename")) {
                if (!$util.isString(message.atypename)) {
                    return "atypename: string expected";
                }
            }
            if (message.aircraftImageUrl != null && message.hasOwnProperty("aircraftImageUrl")) {
                if (!$util.isString(message.aircraftImageUrl)) {
                    return "aircraftImageUrl: string expected";
                }
            }
            if (message.dynamicId != null && message.hasOwnProperty("dynamicId")) {
                if (!$util.isString(message.dynamicId)) {
                    return "dynamicId: string expected";
                }
            }
            if (message.aircraftImageId != null && message.hasOwnProperty("aircraftImageId")) {
                if (!$util.isString(message.aircraftImageId)) {
                    return "aircraftImageId: string expected";
                }
            }
            if (message.orgTinezone != null && message.hasOwnProperty("orgTinezone")) {
                if (!$util.isInteger(message.orgTinezone)) {
                    return "orgTinezone: integer expected";
                }
            }
            if (message.dstTinezone != null && message.hasOwnProperty("dstTinezone")) {
                if (!$util.isInteger(message.dstTinezone)) {
                    return "dstTinezone: integer expected";
                }
            }
            if (message.icaoId != null && message.hasOwnProperty("icaoId")) {
                if (!$util.isString(message.icaoId)) {
                    return "icaoId: string expected";
                }
            }
            return null;
        };

        /**
         * Creates a FlightBase message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.FlightBase
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.FlightBase} FlightBase
         */
        FlightBase.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.FlightBase) {
                return object;
            }
            let message = new $root.veryzhun.FlightBase();
            if (object.airname != null) {
                message.airname = String(object.airname);
            }
            if (object.airCName != null) {
                message.airCName = String(object.airCName);
            }
            if (object.airShortName != null) {
                message.airShortName = String(object.airShortName);
            }
            if (object.airIATA != null) {
                message.airIATA = String(object.airIATA);
            }
            if (object.airICAO != null) {
                message.airICAO = String(object.airICAO);
            }
            if (object.fnum2 != null) {
                message.fnum2 = String(object.fnum2);
            }
            if (object.fnum3 != null) {
                message.fnum3 = String(object.fnum3);
            }
            if (object.forg != null) {
                message.forg = String(object.forg);
            }
            if (object.forgAptName != null) {
                message.forgAptName = String(object.forgAptName);
            }
            if (object.forgAptCname != null) {
                message.forgAptCname = String(object.forgAptCname);
            }
            if (object.forgAptICAO != null) {
                message.forgAptICAO = String(object.forgAptICAO);
            }
            if (object.forgAptLon != null) {
                message.forgAptLon = Number(object.forgAptLon);
            }
            if (object.forgAptLat != null) {
                message.forgAptLat = Number(object.forgAptLat);
            }
            if (object.fdst != null) {
                message.fdst = String(object.fdst);
            }
            if (object.fdstAptName != null) {
                message.fdstAptName = String(object.fdstAptName);
            }
            if (object.fdstAptCname != null) {
                message.fdstAptCname = String(object.fdstAptCname);
            }
            if (object.fdstAptICAO != null) {
                message.fdstAptICAO = String(object.fdstAptICAO);
            }
            if (object.fdstAptLon != null) {
                message.fdstAptLon = Number(object.fdstAptLon);
            }
            if (object.fdstAptLat != null) {
                message.fdstAptLat = Number(object.fdstAptLat);
            }
            if (object.scheduledDeptime != null) {
                message.scheduledDeptime = object.scheduledDeptime | 0;
            }
            if (object.scheduledArrtime != null) {
                message.scheduledArrtime = object.scheduledArrtime | 0;
            }
            if (object.actualDeptime != null) {
                message.actualDeptime = object.actualDeptime | 0;
            }
            if (object.actualArrtime != null) {
                message.actualArrtime = object.actualArrtime | 0;
            }
            if (object.estimateArrtime != null) {
                message.estimateArrtime = object.estimateArrtime | 0;
            }
            if (object.atype != null) {
                message.atype = String(object.atype);
            }
            if (object.atypename != null) {
                message.atypename = String(object.atypename);
            }
            if (object.aircraftImageUrl != null) {
                message.aircraftImageUrl = String(object.aircraftImageUrl);
            }
            if (object.dynamicId != null) {
                message.dynamicId = String(object.dynamicId);
            }
            if (object.aircraftImageId != null) {
                message.aircraftImageId = String(object.aircraftImageId);
            }
            if (object.orgTinezone != null) {
                message.orgTinezone = object.orgTinezone | 0;
            }
            if (object.dstTinezone != null) {
                message.dstTinezone = object.dstTinezone | 0;
            }
            if (object.icaoId != null) {
                message.icaoId = String(object.icaoId);
            }
            return message;
        };

        /**
         * Creates a plain object from a FlightBase message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.FlightBase
         * @static
         * @param {veryzhun.FlightBase} message FlightBase
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        FlightBase.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.airname = "";
                object.airCName = "";
                object.airShortName = "";
                object.airIATA = "";
                object.airICAO = "";
                object.fnum2 = "";
                object.fnum3 = "";
                object.forg = "";
                object.forgAptName = "";
                object.forgAptCname = "";
                object.forgAptICAO = "";
                object.forgAptLon = 0;
                object.forgAptLat = 0;
                object.fdst = "";
                object.fdstAptName = "";
                object.fdstAptCname = "";
                object.fdstAptICAO = "";
                object.fdstAptLon = 0;
                object.fdstAptLat = 0;
                object.scheduledDeptime = 0;
                object.scheduledArrtime = 0;
                object.actualDeptime = 0;
                object.actualArrtime = 0;
                object.estimateArrtime = 0;
                object.atype = "";
                object.atypename = "";
                object.aircraftImageUrl = "";
                object.dynamicId = "";
                object.aircraftImageId = "";
                object.orgTinezone = 0;
                object.dstTinezone = 0;
                object.icaoId = "";
            }
            if (message.airname != null && message.hasOwnProperty("airname")) {
                object.airname = message.airname;
            }
            if (message.airCName != null && message.hasOwnProperty("airCName")) {
                object.airCName = message.airCName;
            }
            if (message.airShortName != null && message.hasOwnProperty("airShortName")) {
                object.airShortName = message.airShortName;
            }
            if (message.airIATA != null && message.hasOwnProperty("airIATA")) {
                object.airIATA = message.airIATA;
            }
            if (message.airICAO != null && message.hasOwnProperty("airICAO")) {
                object.airICAO = message.airICAO;
            }
            if (message.fnum2 != null && message.hasOwnProperty("fnum2")) {
                object.fnum2 = message.fnum2;
            }
            if (message.fnum3 != null && message.hasOwnProperty("fnum3")) {
                object.fnum3 = message.fnum3;
            }
            if (message.forg != null && message.hasOwnProperty("forg")) {
                object.forg = message.forg;
            }
            if (message.forgAptName != null && message.hasOwnProperty("forgAptName")) {
                object.forgAptName = message.forgAptName;
            }
            if (message.forgAptCname != null && message.hasOwnProperty("forgAptCname")) {
                object.forgAptCname = message.forgAptCname;
            }
            if (message.forgAptICAO != null && message.hasOwnProperty("forgAptICAO")) {
                object.forgAptICAO = message.forgAptICAO;
            }
            if (message.forgAptLon != null && message.hasOwnProperty("forgAptLon")) {
                object.forgAptLon = options.json && !isFinite(message.forgAptLon) ? String(message.forgAptLon) : message.forgAptLon;
            }
            if (message.forgAptLat != null && message.hasOwnProperty("forgAptLat")) {
                object.forgAptLat = options.json && !isFinite(message.forgAptLat) ? String(message.forgAptLat) : message.forgAptLat;
            }
            if (message.fdst != null && message.hasOwnProperty("fdst")) {
                object.fdst = message.fdst;
            }
            if (message.fdstAptName != null && message.hasOwnProperty("fdstAptName")) {
                object.fdstAptName = message.fdstAptName;
            }
            if (message.fdstAptCname != null && message.hasOwnProperty("fdstAptCname")) {
                object.fdstAptCname = message.fdstAptCname;
            }
            if (message.fdstAptICAO != null && message.hasOwnProperty("fdstAptICAO")) {
                object.fdstAptICAO = message.fdstAptICAO;
            }
            if (message.fdstAptLon != null && message.hasOwnProperty("fdstAptLon")) {
                object.fdstAptLon = options.json && !isFinite(message.fdstAptLon) ? String(message.fdstAptLon) : message.fdstAptLon;
            }
            if (message.fdstAptLat != null && message.hasOwnProperty("fdstAptLat")) {
                object.fdstAptLat = options.json && !isFinite(message.fdstAptLat) ? String(message.fdstAptLat) : message.fdstAptLat;
            }
            if (message.scheduledDeptime != null && message.hasOwnProperty("scheduledDeptime")) {
                object.scheduledDeptime = message.scheduledDeptime;
            }
            if (message.scheduledArrtime != null && message.hasOwnProperty("scheduledArrtime")) {
                object.scheduledArrtime = message.scheduledArrtime;
            }
            if (message.actualDeptime != null && message.hasOwnProperty("actualDeptime")) {
                object.actualDeptime = message.actualDeptime;
            }
            if (message.actualArrtime != null && message.hasOwnProperty("actualArrtime")) {
                object.actualArrtime = message.actualArrtime;
            }
            if (message.estimateArrtime != null && message.hasOwnProperty("estimateArrtime")) {
                object.estimateArrtime = message.estimateArrtime;
            }
            if (message.atype != null && message.hasOwnProperty("atype")) {
                object.atype = message.atype;
            }
            if (message.atypename != null && message.hasOwnProperty("atypename")) {
                object.atypename = message.atypename;
            }
            if (message.aircraftImageUrl != null && message.hasOwnProperty("aircraftImageUrl")) {
                object.aircraftImageUrl = message.aircraftImageUrl;
            }
            if (message.dynamicId != null && message.hasOwnProperty("dynamicId")) {
                object.dynamicId = message.dynamicId;
            }
            if (message.aircraftImageId != null && message.hasOwnProperty("aircraftImageId")) {
                object.aircraftImageId = message.aircraftImageId;
            }
            if (message.orgTinezone != null && message.hasOwnProperty("orgTinezone")) {
                object.orgTinezone = message.orgTinezone;
            }
            if (message.dstTinezone != null && message.hasOwnProperty("dstTinezone")) {
                object.dstTinezone = message.dstTinezone;
            }
            if (message.icaoId != null && message.hasOwnProperty("icaoId")) {
                object.icaoId = message.icaoId;
            }
            return object;
        };

        /**
         * Converts this FlightBase to JSON.
         * @function toJSON
         * @memberof veryzhun.FlightBase
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        FlightBase.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for FlightBase
         * @function getTypeUrl
         * @memberof veryzhun.FlightBase
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        FlightBase.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.FlightBase";
        };

        return FlightBase;
    })();

    veryzhun.U3DFlightLoc = (function () {

        /**
         * Properties of a U3DFlightLoc.
         * @memberof veryzhun
         * @interface IU3DFlightLoc
         * @property {string|null} [Anum] U3DFlightLoc Anum
         * @property {string|null} [Fnum] U3DFlightLoc Fnum
         * @property {string|null} [Airline] U3DFlightLoc Airline
         * @property {string|null} [Org] U3DFlightLoc Org
         * @property {string|null} [Dst] U3DFlightLoc Dst
         * @property {string|null} [Squawk] U3DFlightLoc Squawk
         * @property {number|null} [Time] U3DFlightLoc Time
         * @property {number|null} [Lat] U3DFlightLoc Lat
         * @property {number|null} [Lon] U3DFlightLoc Lon
         * @property {number|null} [Alt] U3DFlightLoc Alt
         * @property {number|null} [Ang] U3DFlightLoc Ang
         * @property {number|null} [Spd] U3DFlightLoc Spd
         * @property {number|null} [Vspd] U3DFlightLoc Vspd
         * @property {number|null} [ScheduledDeptime] U3DFlightLoc ScheduledDeptime
         * @property {string|null} [icaoId] U3DFlightLoc icaoId
         * @property {string|null} [onground] U3DFlightLoc onground
         * @property {string|null} [ftype] U3DFlightLoc ftype
         * @property {number|null} [orgDistance] U3DFlightLoc orgDistance
         * @property {number|null} [dstDistance] U3DFlightLoc dstDistance
         * @property {number|null} [orgTinezone] U3DFlightLoc orgTinezone
         * @property {number|null} [dstTinezone] U3DFlightLoc dstTinezone
         */

        /**
         * Constructs a new U3DFlightLoc.
         * @memberof veryzhun
         * @classdesc Represents a U3DFlightLoc.
         * @implements IU3DFlightLoc
         * @constructor
         * @param {veryzhun.IU3DFlightLoc=} [properties] Properties to set
         */
        function U3DFlightLoc(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * U3DFlightLoc Anum.
         * @member {string} Anum
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Anum = "";

        /**
         * U3DFlightLoc Fnum.
         * @member {string|null|undefined} Fnum
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Fnum = null;

        /**
         * U3DFlightLoc Airline.
         * @member {string|null|undefined} Airline
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Airline = null;

        /**
         * U3DFlightLoc Org.
         * @member {string|null|undefined} Org
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Org = null;

        /**
         * U3DFlightLoc Dst.
         * @member {string|null|undefined} Dst
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Dst = null;

        /**
         * U3DFlightLoc Squawk.
         * @member {string|null|undefined} Squawk
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Squawk = null;

        /**
         * U3DFlightLoc Time.
         * @member {number} Time
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Time = 0;

        /**
         * U3DFlightLoc Lat.
         * @member {number|null|undefined} Lat
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Lat = null;

        /**
         * U3DFlightLoc Lon.
         * @member {number|null|undefined} Lon
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Lon = null;

        /**
         * U3DFlightLoc Alt.
         * @member {number|null|undefined} Alt
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Alt = null;

        /**
         * U3DFlightLoc Ang.
         * @member {number|null|undefined} Ang
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Ang = null;

        /**
         * U3DFlightLoc Spd.
         * @member {number|null|undefined} Spd
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Spd = null;

        /**
         * U3DFlightLoc Vspd.
         * @member {number|null|undefined} Vspd
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.Vspd = null;

        /**
         * U3DFlightLoc ScheduledDeptime.
         * @member {number} ScheduledDeptime
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.ScheduledDeptime = 0;

        /**
         * U3DFlightLoc icaoId.
         * @member {string} icaoId
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.icaoId = "";

        /**
         * U3DFlightLoc onground.
         * @member {string} onground
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.onground = "";

        /**
         * U3DFlightLoc ftype.
         * @member {string} ftype
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.ftype = "";

        /**
         * U3DFlightLoc orgDistance.
         * @member {number} orgDistance
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.orgDistance = 0;

        /**
         * U3DFlightLoc dstDistance.
         * @member {number} dstDistance
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.dstDistance = 0;

        /**
         * U3DFlightLoc orgTinezone.
         * @member {number} orgTinezone
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.orgTinezone = 0;

        /**
         * U3DFlightLoc dstTinezone.
         * @member {number} dstTinezone
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        U3DFlightLoc.prototype.dstTinezone = 0;

        // OneOf field names bound to virtual getters and setters
        let $oneOfFields;

        /**
         * U3DFlightLoc FnumNullable.
         * @member {"Fnum"|undefined} FnumNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "FnumNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Fnum"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * U3DFlightLoc AirlineNullable.
         * @member {"Airline"|undefined} AirlineNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "AirlineNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Airline"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * U3DFlightLoc OrgNullable.
         * @member {"Org"|undefined} OrgNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "OrgNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Org"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * U3DFlightLoc DstNullable.
         * @member {"Dst"|undefined} DstNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "DstNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Dst"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * U3DFlightLoc SquawkNullable.
         * @member {"Squawk"|undefined} SquawkNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "SquawkNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Squawk"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * U3DFlightLoc LatNullable.
         * @member {"Lat"|undefined} LatNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "LatNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Lat"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * U3DFlightLoc LonNullable.
         * @member {"Lon"|undefined} LonNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "LonNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Lon"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * U3DFlightLoc AltNullable.
         * @member {"Alt"|undefined} AltNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "AltNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Alt"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * U3DFlightLoc AngNullable.
         * @member {"Ang"|undefined} AngNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "AngNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Ang"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * U3DFlightLoc SpdNullable.
         * @member {"Spd"|undefined} SpdNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "SpdNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Spd"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * U3DFlightLoc VspdNullable.
         * @member {"Vspd"|undefined} VspdNullable
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         */
        Object.defineProperty(U3DFlightLoc.prototype, "VspdNullable", {
            get: $util.oneOfGetter($oneOfFields = ["Vspd"]),
            set: $util.oneOfSetter($oneOfFields)
        });

        /**
         * Creates a new U3DFlightLoc instance using the specified properties.
         * @function create
         * @memberof veryzhun.U3DFlightLoc
         * @static
         * @param {veryzhun.IU3DFlightLoc=} [properties] Properties to set
         * @returns {veryzhun.U3DFlightLoc} U3DFlightLoc instance
         */
        U3DFlightLoc.create = function create(properties) {
            return new U3DFlightLoc(properties);
        };

        /**
         * Encodes the specified U3DFlightLoc message. Does not implicitly {@link veryzhun.U3DFlightLoc.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.U3DFlightLoc
         * @static
         * @param {veryzhun.IU3DFlightLoc} message U3DFlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DFlightLoc.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.Anum != null && Object.hasOwnProperty.call(message, "Anum")) {
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.Anum);
            }
            if (message.Fnum != null && Object.hasOwnProperty.call(message, "Fnum")) {
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.Fnum);
            }
            if (message.Airline != null && Object.hasOwnProperty.call(message, "Airline")) {
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.Airline);
            }
            if (message.Org != null && Object.hasOwnProperty.call(message, "Org")) {
                writer.uint32(/* id 4, wireType 2 =*/34).string(message.Org);
            }
            if (message.Dst != null && Object.hasOwnProperty.call(message, "Dst")) {
                writer.uint32(/* id 5, wireType 2 =*/42).string(message.Dst);
            }
            if (message.Squawk != null && Object.hasOwnProperty.call(message, "Squawk")) {
                writer.uint32(/* id 6, wireType 2 =*/50).string(message.Squawk);
            }
            if (message.Time != null && Object.hasOwnProperty.call(message, "Time")) {
                writer.uint32(/* id 7, wireType 0 =*/56).int32(message.Time);
            }
            if (message.Lat != null && Object.hasOwnProperty.call(message, "Lat")) {
                writer.uint32(/* id 8, wireType 1 =*/65).double(message.Lat);
            }
            if (message.Lon != null && Object.hasOwnProperty.call(message, "Lon")) {
                writer.uint32(/* id 9, wireType 1 =*/73).double(message.Lon);
            }
            if (message.Alt != null && Object.hasOwnProperty.call(message, "Alt")) {
                writer.uint32(/* id 10, wireType 5 =*/85).float(message.Alt);
            }
            if (message.Ang != null && Object.hasOwnProperty.call(message, "Ang")) {
                writer.uint32(/* id 11, wireType 5 =*/93).float(message.Ang);
            }
            if (message.Spd != null && Object.hasOwnProperty.call(message, "Spd")) {
                writer.uint32(/* id 12, wireType 5 =*/101).float(message.Spd);
            }
            if (message.Vspd != null && Object.hasOwnProperty.call(message, "Vspd")) {
                writer.uint32(/* id 13, wireType 5 =*/109).float(message.Vspd);
            }
            if (message.ScheduledDeptime != null && Object.hasOwnProperty.call(message, "ScheduledDeptime")) {
                writer.uint32(/* id 14, wireType 0 =*/112).int32(message.ScheduledDeptime);
            }
            if (message.icaoId != null && Object.hasOwnProperty.call(message, "icaoId")) {
                writer.uint32(/* id 15, wireType 2 =*/122).string(message.icaoId);
            }
            if (message.onground != null && Object.hasOwnProperty.call(message, "onground")) {
                writer.uint32(/* id 16, wireType 2 =*/130).string(message.onground);
            }
            if (message.ftype != null && Object.hasOwnProperty.call(message, "ftype")) {
                writer.uint32(/* id 17, wireType 2 =*/138).string(message.ftype);
            }
            if (message.orgDistance != null && Object.hasOwnProperty.call(message, "orgDistance")) {
                writer.uint32(/* id 18, wireType 1 =*/145).double(message.orgDistance);
            }
            if (message.dstDistance != null && Object.hasOwnProperty.call(message, "dstDistance")) {
                writer.uint32(/* id 19, wireType 1 =*/153).double(message.dstDistance);
            }
            if (message.orgTinezone != null && Object.hasOwnProperty.call(message, "orgTinezone")) {
                writer.uint32(/* id 20, wireType 0 =*/160).int32(message.orgTinezone);
            }
            if (message.dstTinezone != null && Object.hasOwnProperty.call(message, "dstTinezone")) {
                writer.uint32(/* id 21, wireType 0 =*/168).int32(message.dstTinezone);
            }
            return writer;
        };

        /**
         * Encodes the specified U3DFlightLoc message, length delimited. Does not implicitly {@link veryzhun.U3DFlightLoc.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.U3DFlightLoc
         * @static
         * @param {veryzhun.IU3DFlightLoc} message U3DFlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DFlightLoc.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a U3DFlightLoc message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.U3DFlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.U3DFlightLoc} U3DFlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DFlightLoc.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.U3DFlightLoc();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.Anum = reader.string();
                        break;
                    }
                    case 2: {
                        message.Fnum = reader.string();
                        break;
                    }
                    case 3: {
                        message.Airline = reader.string();
                        break;
                    }
                    case 4: {
                        message.Org = reader.string();
                        break;
                    }
                    case 5: {
                        message.Dst = reader.string();
                        break;
                    }
                    case 6: {
                        message.Squawk = reader.string();
                        break;
                    }
                    case 7: {
                        message.Time = reader.int32();
                        break;
                    }
                    case 8: {
                        message.Lat = reader.double();
                        break;
                    }
                    case 9: {
                        message.Lon = reader.double();
                        break;
                    }
                    case 10: {
                        message.Alt = reader.float();
                        break;
                    }
                    case 11: {
                        message.Ang = reader.float();
                        break;
                    }
                    case 12: {
                        message.Spd = reader.float();
                        break;
                    }
                    case 13: {
                        message.Vspd = reader.float();
                        break;
                    }
                    case 14: {
                        message.ScheduledDeptime = reader.int32();
                        break;
                    }
                    case 15: {
                        message.icaoId = reader.string();
                        break;
                    }
                    case 16: {
                        message.onground = reader.string();
                        break;
                    }
                    case 17: {
                        message.ftype = reader.string();
                        break;
                    }
                    case 18: {
                        message.orgDistance = reader.double();
                        break;
                    }
                    case 19: {
                        message.dstDistance = reader.double();
                        break;
                    }
                    case 20: {
                        message.orgTinezone = reader.int32();
                        break;
                    }
                    case 21: {
                        message.dstTinezone = reader.int32();
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a U3DFlightLoc message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.U3DFlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.U3DFlightLoc} U3DFlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DFlightLoc.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a U3DFlightLoc message.
         * @function verify
         * @memberof veryzhun.U3DFlightLoc
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        U3DFlightLoc.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            let properties = {};
            if (message.Anum != null && message.hasOwnProperty("Anum")) {
                if (!$util.isString(message.Anum)) {
                    return "Anum: string expected";
                }
            }
            if (message.Fnum != null && message.hasOwnProperty("Fnum")) {
                properties.FnumNullable = 1;
                if (!$util.isString(message.Fnum)) {
                    return "Fnum: string expected";
                }
            }
            if (message.Airline != null && message.hasOwnProperty("Airline")) {
                properties.AirlineNullable = 1;
                if (!$util.isString(message.Airline)) {
                    return "Airline: string expected";
                }
            }
            if (message.Org != null && message.hasOwnProperty("Org")) {
                properties.OrgNullable = 1;
                if (!$util.isString(message.Org)) {
                    return "Org: string expected";
                }
            }
            if (message.Dst != null && message.hasOwnProperty("Dst")) {
                properties.DstNullable = 1;
                if (!$util.isString(message.Dst)) {
                    return "Dst: string expected";
                }
            }
            if (message.Squawk != null && message.hasOwnProperty("Squawk")) {
                properties.SquawkNullable = 1;
                if (!$util.isString(message.Squawk)) {
                    return "Squawk: string expected";
                }
            }
            if (message.Time != null && message.hasOwnProperty("Time")) {
                if (!$util.isInteger(message.Time)) {
                    return "Time: integer expected";
                }
            }
            if (message.Lat != null && message.hasOwnProperty("Lat")) {
                properties.LatNullable = 1;
                if (typeof message.Lat !== "number") {
                    return "Lat: number expected";
                }
            }
            if (message.Lon != null && message.hasOwnProperty("Lon")) {
                properties.LonNullable = 1;
                if (typeof message.Lon !== "number") {
                    return "Lon: number expected";
                }
            }
            if (message.Alt != null && message.hasOwnProperty("Alt")) {
                properties.AltNullable = 1;
                if (typeof message.Alt !== "number") {
                    return "Alt: number expected";
                }
            }
            if (message.Ang != null && message.hasOwnProperty("Ang")) {
                properties.AngNullable = 1;
                if (typeof message.Ang !== "number") {
                    return "Ang: number expected";
                }
            }
            if (message.Spd != null && message.hasOwnProperty("Spd")) {
                properties.SpdNullable = 1;
                if (typeof message.Spd !== "number") {
                    return "Spd: number expected";
                }
            }
            if (message.Vspd != null && message.hasOwnProperty("Vspd")) {
                properties.VspdNullable = 1;
                if (typeof message.Vspd !== "number") {
                    return "Vspd: number expected";
                }
            }
            if (message.ScheduledDeptime != null && message.hasOwnProperty("ScheduledDeptime")) {
                if (!$util.isInteger(message.ScheduledDeptime)) {
                    return "ScheduledDeptime: integer expected";
                }
            }
            if (message.icaoId != null && message.hasOwnProperty("icaoId")) {
                if (!$util.isString(message.icaoId)) {
                    return "icaoId: string expected";
                }
            }
            if (message.onground != null && message.hasOwnProperty("onground")) {
                if (!$util.isString(message.onground)) {
                    return "onground: string expected";
                }
            }
            if (message.ftype != null && message.hasOwnProperty("ftype")) {
                if (!$util.isString(message.ftype)) {
                    return "ftype: string expected";
                }
            }
            if (message.orgDistance != null && message.hasOwnProperty("orgDistance")) {
                if (typeof message.orgDistance !== "number") {
                    return "orgDistance: number expected";
                }
            }
            if (message.dstDistance != null && message.hasOwnProperty("dstDistance")) {
                if (typeof message.dstDistance !== "number") {
                    return "dstDistance: number expected";
                }
            }
            if (message.orgTinezone != null && message.hasOwnProperty("orgTinezone")) {
                if (!$util.isInteger(message.orgTinezone)) {
                    return "orgTinezone: integer expected";
                }
            }
            if (message.dstTinezone != null && message.hasOwnProperty("dstTinezone")) {
                if (!$util.isInteger(message.dstTinezone)) {
                    return "dstTinezone: integer expected";
                }
            }
            return null;
        };

        /**
         * Creates a U3DFlightLoc message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.U3DFlightLoc
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.U3DFlightLoc} U3DFlightLoc
         */
        U3DFlightLoc.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.U3DFlightLoc) {
                return object;
            }
            let message = new $root.veryzhun.U3DFlightLoc();
            if (object.Anum != null) {
                message.Anum = String(object.Anum);
            }
            if (object.Fnum != null) {
                message.Fnum = String(object.Fnum);
            }
            if (object.Airline != null) {
                message.Airline = String(object.Airline);
            }
            if (object.Org != null) {
                message.Org = String(object.Org);
            }
            if (object.Dst != null) {
                message.Dst = String(object.Dst);
            }
            if (object.Squawk != null) {
                message.Squawk = String(object.Squawk);
            }
            if (object.Time != null) {
                message.Time = object.Time | 0;
            }
            if (object.Lat != null) {
                message.Lat = Number(object.Lat);
            }
            if (object.Lon != null) {
                message.Lon = Number(object.Lon);
            }
            if (object.Alt != null) {
                message.Alt = Number(object.Alt);
            }
            if (object.Ang != null) {
                message.Ang = Number(object.Ang);
            }
            if (object.Spd != null) {
                message.Spd = Number(object.Spd);
            }
            if (object.Vspd != null) {
                message.Vspd = Number(object.Vspd);
            }
            if (object.ScheduledDeptime != null) {
                message.ScheduledDeptime = object.ScheduledDeptime | 0;
            }
            if (object.icaoId != null) {
                message.icaoId = String(object.icaoId);
            }
            if (object.onground != null) {
                message.onground = String(object.onground);
            }
            if (object.ftype != null) {
                message.ftype = String(object.ftype);
            }
            if (object.orgDistance != null) {
                message.orgDistance = Number(object.orgDistance);
            }
            if (object.dstDistance != null) {
                message.dstDistance = Number(object.dstDistance);
            }
            if (object.orgTinezone != null) {
                message.orgTinezone = object.orgTinezone | 0;
            }
            if (object.dstTinezone != null) {
                message.dstTinezone = object.dstTinezone | 0;
            }
            return message;
        };

        /**
         * Creates a plain object from a U3DFlightLoc message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.U3DFlightLoc
         * @static
         * @param {veryzhun.U3DFlightLoc} message U3DFlightLoc
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        U3DFlightLoc.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.Anum = "";
                object.Time = 0;
                object.ScheduledDeptime = 0;
                object.icaoId = "";
                object.onground = "";
                object.ftype = "";
                object.orgDistance = 0;
                object.dstDistance = 0;
                object.orgTinezone = 0;
                object.dstTinezone = 0;
            }
            if (message.Anum != null && message.hasOwnProperty("Anum")) {
                object.Anum = message.Anum;
            }
            if (message.Fnum != null && message.hasOwnProperty("Fnum")) {
                object.Fnum = message.Fnum;
                if (options.oneofs) {
                    object.FnumNullable = "Fnum";
                }
            }
            if (message.Airline != null && message.hasOwnProperty("Airline")) {
                object.Airline = message.Airline;
                if (options.oneofs) {
                    object.AirlineNullable = "Airline";
                }
            }
            if (message.Org != null && message.hasOwnProperty("Org")) {
                object.Org = message.Org;
                if (options.oneofs) {
                    object.OrgNullable = "Org";
                }
            }
            if (message.Dst != null && message.hasOwnProperty("Dst")) {
                object.Dst = message.Dst;
                if (options.oneofs) {
                    object.DstNullable = "Dst";
                }
            }
            if (message.Squawk != null && message.hasOwnProperty("Squawk")) {
                object.Squawk = message.Squawk;
                if (options.oneofs) {
                    object.SquawkNullable = "Squawk";
                }
            }
            if (message.Time != null && message.hasOwnProperty("Time")) {
                object.Time = message.Time;
            }
            if (message.Lat != null && message.hasOwnProperty("Lat")) {
                object.Lat = options.json && !isFinite(message.Lat) ? String(message.Lat) : message.Lat;
                if (options.oneofs) {
                    object.LatNullable = "Lat";
                }
            }
            if (message.Lon != null && message.hasOwnProperty("Lon")) {
                object.Lon = options.json && !isFinite(message.Lon) ? String(message.Lon) : message.Lon;
                if (options.oneofs) {
                    object.LonNullable = "Lon";
                }
            }
            if (message.Alt != null && message.hasOwnProperty("Alt")) {
                object.Alt = options.json && !isFinite(message.Alt) ? String(message.Alt) : message.Alt;
                if (options.oneofs) {
                    object.AltNullable = "Alt";
                }
            }
            if (message.Ang != null && message.hasOwnProperty("Ang")) {
                object.Ang = options.json && !isFinite(message.Ang) ? String(message.Ang) : message.Ang;
                if (options.oneofs) {
                    object.AngNullable = "Ang";
                }
            }
            if (message.Spd != null && message.hasOwnProperty("Spd")) {
                object.Spd = options.json && !isFinite(message.Spd) ? String(message.Spd) : message.Spd;
                if (options.oneofs) {
                    object.SpdNullable = "Spd";
                }
            }
            if (message.Vspd != null && message.hasOwnProperty("Vspd")) {
                object.Vspd = options.json && !isFinite(message.Vspd) ? String(message.Vspd) : message.Vspd;
                if (options.oneofs) {
                    object.VspdNullable = "Vspd";
                }
            }
            if (message.ScheduledDeptime != null && message.hasOwnProperty("ScheduledDeptime")) {
                object.ScheduledDeptime = message.ScheduledDeptime;
            }
            if (message.icaoId != null && message.hasOwnProperty("icaoId")) {
                object.icaoId = message.icaoId;
            }
            if (message.onground != null && message.hasOwnProperty("onground")) {
                object.onground = message.onground;
            }
            if (message.ftype != null && message.hasOwnProperty("ftype")) {
                object.ftype = message.ftype;
            }
            if (message.orgDistance != null && message.hasOwnProperty("orgDistance")) {
                object.orgDistance = options.json && !isFinite(message.orgDistance) ? String(message.orgDistance) : message.orgDistance;
            }
            if (message.dstDistance != null && message.hasOwnProperty("dstDistance")) {
                object.dstDistance = options.json && !isFinite(message.dstDistance) ? String(message.dstDistance) : message.dstDistance;
            }
            if (message.orgTinezone != null && message.hasOwnProperty("orgTinezone")) {
                object.orgTinezone = message.orgTinezone;
            }
            if (message.dstTinezone != null && message.hasOwnProperty("dstTinezone")) {
                object.dstTinezone = message.dstTinezone;
            }
            return object;
        };

        /**
         * Converts this U3DFlightLoc to JSON.
         * @function toJSON
         * @memberof veryzhun.U3DFlightLoc
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        U3DFlightLoc.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for U3DFlightLoc
         * @function getTypeUrl
         * @memberof veryzhun.U3DFlightLoc
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        U3DFlightLoc.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.U3DFlightLoc";
        };

        return U3DFlightLoc;
    })();

    veryzhun.U3DFlightPath = (function () {

        /**
         * Properties of a U3DFlightPath.
         * @memberof veryzhun
         * @interface IU3DFlightPath
         * @property {veryzhun.IU3DTrace|null} [trace] U3DFlightPath trace
         * @property {veryzhun.IU3DForecastTrace|null} [forecastTrace] U3DFlightPath forecastTrace
         */

        /**
         * Constructs a new U3DFlightPath.
         * @memberof veryzhun
         * @classdesc Represents a U3DFlightPath.
         * @implements IU3DFlightPath
         * @constructor
         * @param {veryzhun.IU3DFlightPath=} [properties] Properties to set
         */
        function U3DFlightPath(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * U3DFlightPath trace.
         * @member {veryzhun.IU3DTrace|null|undefined} trace
         * @memberof veryzhun.U3DFlightPath
         * @instance
         */
        U3DFlightPath.prototype.trace = null;

        /**
         * U3DFlightPath forecastTrace.
         * @member {veryzhun.IU3DForecastTrace|null|undefined} forecastTrace
         * @memberof veryzhun.U3DFlightPath
         * @instance
         */
        U3DFlightPath.prototype.forecastTrace = null;

        /**
         * Creates a new U3DFlightPath instance using the specified properties.
         * @function create
         * @memberof veryzhun.U3DFlightPath
         * @static
         * @param {veryzhun.IU3DFlightPath=} [properties] Properties to set
         * @returns {veryzhun.U3DFlightPath} U3DFlightPath instance
         */
        U3DFlightPath.create = function create(properties) {
            return new U3DFlightPath(properties);
        };

        /**
         * Encodes the specified U3DFlightPath message. Does not implicitly {@link veryzhun.U3DFlightPath.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.U3DFlightPath
         * @static
         * @param {veryzhun.IU3DFlightPath} message U3DFlightPath message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DFlightPath.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.trace != null && Object.hasOwnProperty.call(message, "trace")) {
                $root.veryzhun.U3DTrace.encode(message.trace, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            }
            if (message.forecastTrace != null && Object.hasOwnProperty.call(message, "forecastTrace")) {
                $root.veryzhun.U3DForecastTrace.encode(message.forecastTrace, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
            }
            return writer;
        };

        /**
         * Encodes the specified U3DFlightPath message, length delimited. Does not implicitly {@link veryzhun.U3DFlightPath.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.U3DFlightPath
         * @static
         * @param {veryzhun.IU3DFlightPath} message U3DFlightPath message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DFlightPath.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a U3DFlightPath message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.U3DFlightPath
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.U3DFlightPath} U3DFlightPath
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DFlightPath.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.U3DFlightPath();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.trace = $root.veryzhun.U3DTrace.decode(reader, reader.uint32());
                        break;
                    }
                    case 2: {
                        message.forecastTrace = $root.veryzhun.U3DForecastTrace.decode(reader, reader.uint32());
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a U3DFlightPath message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.U3DFlightPath
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.U3DFlightPath} U3DFlightPath
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DFlightPath.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a U3DFlightPath message.
         * @function verify
         * @memberof veryzhun.U3DFlightPath
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        U3DFlightPath.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.trace != null && message.hasOwnProperty("trace")) {
                let error = $root.veryzhun.U3DTrace.verify(message.trace);
                if (error) {
                    return "trace." + error;
                }
            }
            if (message.forecastTrace != null && message.hasOwnProperty("forecastTrace")) {
                let error = $root.veryzhun.U3DForecastTrace.verify(message.forecastTrace);
                if (error) {
                    return "forecastTrace." + error;
                }
            }
            return null;
        };

        /**
         * Creates a U3DFlightPath message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.U3DFlightPath
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.U3DFlightPath} U3DFlightPath
         */
        U3DFlightPath.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.U3DFlightPath) {
                return object;
            }
            let message = new $root.veryzhun.U3DFlightPath();
            if (object.trace != null) {
                if (typeof object.trace !== "object") {
                    throw TypeError(".veryzhun.U3DFlightPath.trace: object expected");
                }
                message.trace = $root.veryzhun.U3DTrace.fromObject(object.trace);
            }
            if (object.forecastTrace != null) {
                if (typeof object.forecastTrace !== "object") {
                    throw TypeError(".veryzhun.U3DFlightPath.forecastTrace: object expected");
                }
                message.forecastTrace = $root.veryzhun.U3DForecastTrace.fromObject(object.forecastTrace);
            }
            return message;
        };

        /**
         * Creates a plain object from a U3DFlightPath message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.U3DFlightPath
         * @static
         * @param {veryzhun.U3DFlightPath} message U3DFlightPath
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        U3DFlightPath.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.trace = null;
                object.forecastTrace = null;
            }
            if (message.trace != null && message.hasOwnProperty("trace")) {
                object.trace = $root.veryzhun.U3DTrace.toObject(message.trace, options);
            }
            if (message.forecastTrace != null && message.hasOwnProperty("forecastTrace")) {
                object.forecastTrace = $root.veryzhun.U3DForecastTrace.toObject(message.forecastTrace, options);
            }
            return object;
        };

        /**
         * Converts this U3DFlightPath to JSON.
         * @function toJSON
         * @memberof veryzhun.U3DFlightPath
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        U3DFlightPath.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for U3DFlightPath
         * @function getTypeUrl
         * @memberof veryzhun.U3DFlightPath
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        U3DFlightPath.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.U3DFlightPath";
        };

        return U3DFlightPath;
    })();

    veryzhun.U3DTrace = (function () {

        /**
         * Properties of a U3DTrace.
         * @memberof veryzhun
         * @interface IU3DTrace
         * @property {number|null} [realFlag] U3DTrace realFlag
         * @property {Array.<veryzhun.IU3DFlightLoc>|null} [path] U3DTrace path
         */

        /**
         * Constructs a new U3DTrace.
         * @memberof veryzhun
         * @classdesc Represents a U3DTrace.
         * @implements IU3DTrace
         * @constructor
         * @param {veryzhun.IU3DTrace=} [properties] Properties to set
         */
        function U3DTrace(properties) {
            this.path = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * U3DTrace realFlag.
         * @member {number} realFlag
         * @memberof veryzhun.U3DTrace
         * @instance
         */
        U3DTrace.prototype.realFlag = 0;

        /**
         * U3DTrace path.
         * @member {Array.<veryzhun.IU3DFlightLoc>} path
         * @memberof veryzhun.U3DTrace
         * @instance
         */
        U3DTrace.prototype.path = $util.emptyArray;

        /**
         * Creates a new U3DTrace instance using the specified properties.
         * @function create
         * @memberof veryzhun.U3DTrace
         * @static
         * @param {veryzhun.IU3DTrace=} [properties] Properties to set
         * @returns {veryzhun.U3DTrace} U3DTrace instance
         */
        U3DTrace.create = function create(properties) {
            return new U3DTrace(properties);
        };

        /**
         * Encodes the specified U3DTrace message. Does not implicitly {@link veryzhun.U3DTrace.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.U3DTrace
         * @static
         * @param {veryzhun.IU3DTrace} message U3DTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DTrace.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.realFlag != null && Object.hasOwnProperty.call(message, "realFlag")) {
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.realFlag);
            }
            if (message.path != null && message.path.length) {
                for (let i = 0; i < message.path.length; ++i) {
                    $root.veryzhun.U3DFlightLoc.encode(message.path[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified U3DTrace message, length delimited. Does not implicitly {@link veryzhun.U3DTrace.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.U3DTrace
         * @static
         * @param {veryzhun.IU3DTrace} message U3DTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DTrace.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a U3DTrace message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.U3DTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.U3DTrace} U3DTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DTrace.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.U3DTrace();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.realFlag = reader.int32();
                        break;
                    }
                    case 2: {
                        if (!(message.path && message.path.length)) {
                            message.path = [];
                        }
                        message.path.push($root.veryzhun.U3DFlightLoc.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a U3DTrace message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.U3DTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.U3DTrace} U3DTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DTrace.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a U3DTrace message.
         * @function verify
         * @memberof veryzhun.U3DTrace
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        U3DTrace.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.realFlag != null && message.hasOwnProperty("realFlag")) {
                if (!$util.isInteger(message.realFlag)) {
                    return "realFlag: integer expected";
                }
            }
            if (message.path != null && message.hasOwnProperty("path")) {
                if (!Array.isArray(message.path)) {
                    return "path: array expected";
                }
                for (let i = 0; i < message.path.length; ++i) {
                    let error = $root.veryzhun.U3DFlightLoc.verify(message.path[i]);
                    if (error) {
                        return "path." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a U3DTrace message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.U3DTrace
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.U3DTrace} U3DTrace
         */
        U3DTrace.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.U3DTrace) {
                return object;
            }
            let message = new $root.veryzhun.U3DTrace();
            if (object.realFlag != null) {
                message.realFlag = object.realFlag | 0;
            }
            if (object.path) {
                if (!Array.isArray(object.path)) {
                    throw TypeError(".veryzhun.U3DTrace.path: array expected");
                }
                message.path = [];
                for (let i = 0; i < object.path.length; ++i) {
                    if (typeof object.path[i] !== "object") {
                        throw TypeError(".veryzhun.U3DTrace.path: object expected");
                    }
                    message.path[i] = $root.veryzhun.U3DFlightLoc.fromObject(object.path[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a U3DTrace message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.U3DTrace
         * @static
         * @param {veryzhun.U3DTrace} message U3DTrace
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        U3DTrace.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.path = [];
            }
            if (options.defaults) {
                object.realFlag = 0;
            }
            if (message.realFlag != null && message.hasOwnProperty("realFlag")) {
                object.realFlag = message.realFlag;
            }
            if (message.path && message.path.length) {
                object.path = [];
                for (let j = 0; j < message.path.length; ++j) {
                    object.path[j] = $root.veryzhun.U3DFlightLoc.toObject(message.path[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this U3DTrace to JSON.
         * @function toJSON
         * @memberof veryzhun.U3DTrace
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        U3DTrace.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for U3DTrace
         * @function getTypeUrl
         * @memberof veryzhun.U3DTrace
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        U3DTrace.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.U3DTrace";
        };

        return U3DTrace;
    })();

    veryzhun.U3DSubscribeFlightLoc = (function () {

        /**
         * Properties of a U3DSubscribeFlightLoc.
         * @memberof veryzhun
         * @interface IU3DSubscribeFlightLoc
         * @property {string|null} [id] U3DSubscribeFlightLoc id
         * @property {Array.<veryzhun.IU3DFlightLoc>|null} [flightLoc] U3DSubscribeFlightLoc flightLoc
         */

        /**
         * Constructs a new U3DSubscribeFlightLoc.
         * @memberof veryzhun
         * @classdesc Represents a U3DSubscribeFlightLoc.
         * @implements IU3DSubscribeFlightLoc
         * @constructor
         * @param {veryzhun.IU3DSubscribeFlightLoc=} [properties] Properties to set
         */
        function U3DSubscribeFlightLoc(properties) {
            this.flightLoc = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * U3DSubscribeFlightLoc id.
         * @member {string} id
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @instance
         */
        U3DSubscribeFlightLoc.prototype.id = "";

        /**
         * U3DSubscribeFlightLoc flightLoc.
         * @member {Array.<veryzhun.IU3DFlightLoc>} flightLoc
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @instance
         */
        U3DSubscribeFlightLoc.prototype.flightLoc = $util.emptyArray;

        /**
         * Creates a new U3DSubscribeFlightLoc instance using the specified properties.
         * @function create
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @static
         * @param {veryzhun.IU3DSubscribeFlightLoc=} [properties] Properties to set
         * @returns {veryzhun.U3DSubscribeFlightLoc} U3DSubscribeFlightLoc instance
         */
        U3DSubscribeFlightLoc.create = function create(properties) {
            return new U3DSubscribeFlightLoc(properties);
        };

        /**
         * Encodes the specified U3DSubscribeFlightLoc message. Does not implicitly {@link veryzhun.U3DSubscribeFlightLoc.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @static
         * @param {veryzhun.IU3DSubscribeFlightLoc} message U3DSubscribeFlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DSubscribeFlightLoc.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.id != null && Object.hasOwnProperty.call(message, "id")) {
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.id);
            }
            if (message.flightLoc != null && message.flightLoc.length) {
                for (let i = 0; i < message.flightLoc.length; ++i) {
                    $root.veryzhun.U3DFlightLoc.encode(message.flightLoc[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified U3DSubscribeFlightLoc message, length delimited. Does not implicitly {@link veryzhun.U3DSubscribeFlightLoc.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @static
         * @param {veryzhun.IU3DSubscribeFlightLoc} message U3DSubscribeFlightLoc message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DSubscribeFlightLoc.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a U3DSubscribeFlightLoc message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.U3DSubscribeFlightLoc} U3DSubscribeFlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DSubscribeFlightLoc.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.U3DSubscribeFlightLoc();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.id = reader.string();
                        break;
                    }
                    case 2: {
                        if (!(message.flightLoc && message.flightLoc.length)) {
                            message.flightLoc = [];
                        }
                        message.flightLoc.push($root.veryzhun.U3DFlightLoc.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a U3DSubscribeFlightLoc message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.U3DSubscribeFlightLoc} U3DSubscribeFlightLoc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DSubscribeFlightLoc.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a U3DSubscribeFlightLoc message.
         * @function verify
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        U3DSubscribeFlightLoc.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.id != null && message.hasOwnProperty("id")) {
                if (!$util.isString(message.id)) {
                    return "id: string expected";
                }
            }
            if (message.flightLoc != null && message.hasOwnProperty("flightLoc")) {
                if (!Array.isArray(message.flightLoc)) {
                    return "flightLoc: array expected";
                }
                for (let i = 0; i < message.flightLoc.length; ++i) {
                    let error = $root.veryzhun.U3DFlightLoc.verify(message.flightLoc[i]);
                    if (error) {
                        return "flightLoc." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a U3DSubscribeFlightLoc message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.U3DSubscribeFlightLoc} U3DSubscribeFlightLoc
         */
        U3DSubscribeFlightLoc.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.U3DSubscribeFlightLoc) {
                return object;
            }
            let message = new $root.veryzhun.U3DSubscribeFlightLoc();
            if (object.id != null) {
                message.id = String(object.id);
            }
            if (object.flightLoc) {
                if (!Array.isArray(object.flightLoc)) {
                    throw TypeError(".veryzhun.U3DSubscribeFlightLoc.flightLoc: array expected");
                }
                message.flightLoc = [];
                for (let i = 0; i < object.flightLoc.length; ++i) {
                    if (typeof object.flightLoc[i] !== "object") {
                        throw TypeError(".veryzhun.U3DSubscribeFlightLoc.flightLoc: object expected");
                    }
                    message.flightLoc[i] = $root.veryzhun.U3DFlightLoc.fromObject(object.flightLoc[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a U3DSubscribeFlightLoc message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @static
         * @param {veryzhun.U3DSubscribeFlightLoc} message U3DSubscribeFlightLoc
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        U3DSubscribeFlightLoc.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.flightLoc = [];
            }
            if (options.defaults) {
                object.id = "";
            }
            if (message.id != null && message.hasOwnProperty("id")) {
                object.id = message.id;
            }
            if (message.flightLoc && message.flightLoc.length) {
                object.flightLoc = [];
                for (let j = 0; j < message.flightLoc.length; ++j) {
                    object.flightLoc[j] = $root.veryzhun.U3DFlightLoc.toObject(message.flightLoc[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this U3DSubscribeFlightLoc to JSON.
         * @function toJSON
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        U3DSubscribeFlightLoc.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for U3DSubscribeFlightLoc
         * @function getTypeUrl
         * @memberof veryzhun.U3DSubscribeFlightLoc
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        U3DSubscribeFlightLoc.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.U3DSubscribeFlightLoc";
        };

        return U3DSubscribeFlightLoc;
    })();

    veryzhun.RoutePoint = (function () {

        /**
         * Properties of a RoutePoint.
         * @memberof veryzhun
         * @interface IRoutePoint
         * @property {string|null} [name] RoutePoint name
         * @property {number|null} [lat] RoutePoint lat
         * @property {number|null} [lon] RoutePoint lon
         * @property {number|null} [flyOverTime] RoutePoint flyOverTime
         */

        /**
         * Constructs a new RoutePoint.
         * @memberof veryzhun
         * @classdesc Represents a RoutePoint.
         * @implements IRoutePoint
         * @constructor
         * @param {veryzhun.IRoutePoint=} [properties] Properties to set
         */
        function RoutePoint(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * RoutePoint name.
         * @member {string} name
         * @memberof veryzhun.RoutePoint
         * @instance
         */
        RoutePoint.prototype.name = "";

        /**
         * RoutePoint lat.
         * @member {number} lat
         * @memberof veryzhun.RoutePoint
         * @instance
         */
        RoutePoint.prototype.lat = 0;

        /**
         * RoutePoint lon.
         * @member {number} lon
         * @memberof veryzhun.RoutePoint
         * @instance
         */
        RoutePoint.prototype.lon = 0;

        /**
         * RoutePoint flyOverTime.
         * @member {number} flyOverTime
         * @memberof veryzhun.RoutePoint
         * @instance
         */
        RoutePoint.prototype.flyOverTime = 0;

        /**
         * Creates a new RoutePoint instance using the specified properties.
         * @function create
         * @memberof veryzhun.RoutePoint
         * @static
         * @param {veryzhun.IRoutePoint=} [properties] Properties to set
         * @returns {veryzhun.RoutePoint} RoutePoint instance
         */
        RoutePoint.create = function create(properties) {
            return new RoutePoint(properties);
        };

        /**
         * Encodes the specified RoutePoint message. Does not implicitly {@link veryzhun.RoutePoint.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.RoutePoint
         * @static
         * @param {veryzhun.IRoutePoint} message RoutePoint message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoutePoint.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.name != null && Object.hasOwnProperty.call(message, "name")) {
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
            }
            if (message.lat != null && Object.hasOwnProperty.call(message, "lat")) {
                writer.uint32(/* id 2, wireType 1 =*/17).double(message.lat);
            }
            if (message.lon != null && Object.hasOwnProperty.call(message, "lon")) {
                writer.uint32(/* id 3, wireType 1 =*/25).double(message.lon);
            }
            if (message.flyOverTime != null && Object.hasOwnProperty.call(message, "flyOverTime")) {
                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.flyOverTime);
            }
            return writer;
        };

        /**
         * Encodes the specified RoutePoint message, length delimited. Does not implicitly {@link veryzhun.RoutePoint.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.RoutePoint
         * @static
         * @param {veryzhun.IRoutePoint} message RoutePoint message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        RoutePoint.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a RoutePoint message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.RoutePoint
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.RoutePoint} RoutePoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoutePoint.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.RoutePoint();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.name = reader.string();
                        break;
                    }
                    case 2: {
                        message.lat = reader.double();
                        break;
                    }
                    case 3: {
                        message.lon = reader.double();
                        break;
                    }
                    case 4: {
                        message.flyOverTime = reader.int32();
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a RoutePoint message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.RoutePoint
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.RoutePoint} RoutePoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RoutePoint.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a RoutePoint message.
         * @function verify
         * @memberof veryzhun.RoutePoint
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        RoutePoint.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.name != null && message.hasOwnProperty("name")) {
                if (!$util.isString(message.name)) {
                    return "name: string expected";
                }
            }
            if (message.lat != null && message.hasOwnProperty("lat")) {
                if (typeof message.lat !== "number") {
                    return "lat: number expected";
                }
            }
            if (message.lon != null && message.hasOwnProperty("lon")) {
                if (typeof message.lon !== "number") {
                    return "lon: number expected";
                }
            }
            if (message.flyOverTime != null && message.hasOwnProperty("flyOverTime")) {
                if (!$util.isInteger(message.flyOverTime)) {
                    return "flyOverTime: integer expected";
                }
            }
            return null;
        };

        /**
         * Creates a RoutePoint message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.RoutePoint
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.RoutePoint} RoutePoint
         */
        RoutePoint.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.RoutePoint) {
                return object;
            }
            let message = new $root.veryzhun.RoutePoint();
            if (object.name != null) {
                message.name = String(object.name);
            }
            if (object.lat != null) {
                message.lat = Number(object.lat);
            }
            if (object.lon != null) {
                message.lon = Number(object.lon);
            }
            if (object.flyOverTime != null) {
                message.flyOverTime = object.flyOverTime | 0;
            }
            return message;
        };

        /**
         * Creates a plain object from a RoutePoint message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.RoutePoint
         * @static
         * @param {veryzhun.RoutePoint} message RoutePoint
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        RoutePoint.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.name = "";
                object.lat = 0;
                object.lon = 0;
                object.flyOverTime = 0;
            }
            if (message.name != null && message.hasOwnProperty("name")) {
                object.name = message.name;
            }
            if (message.lat != null && message.hasOwnProperty("lat")) {
                object.lat = options.json && !isFinite(message.lat) ? String(message.lat) : message.lat;
            }
            if (message.lon != null && message.hasOwnProperty("lon")) {
                object.lon = options.json && !isFinite(message.lon) ? String(message.lon) : message.lon;
            }
            if (message.flyOverTime != null && message.hasOwnProperty("flyOverTime")) {
                object.flyOverTime = message.flyOverTime;
            }
            return object;
        };

        /**
         * Converts this RoutePoint to JSON.
         * @function toJSON
         * @memberof veryzhun.RoutePoint
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        RoutePoint.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for RoutePoint
         * @function getTypeUrl
         * @memberof veryzhun.RoutePoint
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        RoutePoint.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.RoutePoint";
        };

        return RoutePoint;
    })();

    veryzhun.FlightRoute = (function () {

        /**
         * Properties of a FlightRoute.
         * @memberof veryzhun
         * @interface IFlightRoute
         * @property {veryzhun.IRoutePoint|null} [routePoint] FlightRoute routePoint
         * @property {number|null} [currentFnumVolume] FlightRoute currentFnumVolume
         * @property {number|null} [avgFnumVolume] FlightRoute avgFnumVolume
         */

        /**
         * Constructs a new FlightRoute.
         * @memberof veryzhun
         * @classdesc Represents a FlightRoute.
         * @implements IFlightRoute
         * @constructor
         * @param {veryzhun.IFlightRoute=} [properties] Properties to set
         */
        function FlightRoute(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * FlightRoute routePoint.
         * @member {veryzhun.IRoutePoint|null|undefined} routePoint
         * @memberof veryzhun.FlightRoute
         * @instance
         */
        FlightRoute.prototype.routePoint = null;

        /**
         * FlightRoute currentFnumVolume.
         * @member {number} currentFnumVolume
         * @memberof veryzhun.FlightRoute
         * @instance
         */
        FlightRoute.prototype.currentFnumVolume = 0;

        /**
         * FlightRoute avgFnumVolume.
         * @member {number} avgFnumVolume
         * @memberof veryzhun.FlightRoute
         * @instance
         */
        FlightRoute.prototype.avgFnumVolume = 0;

        /**
         * Creates a new FlightRoute instance using the specified properties.
         * @function create
         * @memberof veryzhun.FlightRoute
         * @static
         * @param {veryzhun.IFlightRoute=} [properties] Properties to set
         * @returns {veryzhun.FlightRoute} FlightRoute instance
         */
        FlightRoute.create = function create(properties) {
            return new FlightRoute(properties);
        };

        /**
         * Encodes the specified FlightRoute message. Does not implicitly {@link veryzhun.FlightRoute.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.FlightRoute
         * @static
         * @param {veryzhun.IFlightRoute} message FlightRoute message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightRoute.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.routePoint != null && Object.hasOwnProperty.call(message, "routePoint")) {
                $root.veryzhun.RoutePoint.encode(message.routePoint, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            }
            if (message.currentFnumVolume != null && Object.hasOwnProperty.call(message, "currentFnumVolume")) {
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.currentFnumVolume);
            }
            if (message.avgFnumVolume != null && Object.hasOwnProperty.call(message, "avgFnumVolume")) {
                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.avgFnumVolume);
            }
            return writer;
        };

        /**
         * Encodes the specified FlightRoute message, length delimited. Does not implicitly {@link veryzhun.FlightRoute.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.FlightRoute
         * @static
         * @param {veryzhun.IFlightRoute} message FlightRoute message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightRoute.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a FlightRoute message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.FlightRoute
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.FlightRoute} FlightRoute
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightRoute.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.FlightRoute();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.routePoint = $root.veryzhun.RoutePoint.decode(reader, reader.uint32());
                        break;
                    }
                    case 2: {
                        message.currentFnumVolume = reader.int32();
                        break;
                    }
                    case 3: {
                        message.avgFnumVolume = reader.int32();
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a FlightRoute message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.FlightRoute
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.FlightRoute} FlightRoute
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightRoute.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a FlightRoute message.
         * @function verify
         * @memberof veryzhun.FlightRoute
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        FlightRoute.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.routePoint != null && message.hasOwnProperty("routePoint")) {
                let error = $root.veryzhun.RoutePoint.verify(message.routePoint);
                if (error) {
                    return "routePoint." + error;
                }
            }
            if (message.currentFnumVolume != null && message.hasOwnProperty("currentFnumVolume")) {
                if (!$util.isInteger(message.currentFnumVolume)) {
                    return "currentFnumVolume: integer expected";
                }
            }
            if (message.avgFnumVolume != null && message.hasOwnProperty("avgFnumVolume")) {
                if (!$util.isInteger(message.avgFnumVolume)) {
                    return "avgFnumVolume: integer expected";
                }
            }
            return null;
        };

        /**
         * Creates a FlightRoute message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.FlightRoute
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.FlightRoute} FlightRoute
         */
        FlightRoute.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.FlightRoute) {
                return object;
            }
            let message = new $root.veryzhun.FlightRoute();
            if (object.routePoint != null) {
                if (typeof object.routePoint !== "object") {
                    throw TypeError(".veryzhun.FlightRoute.routePoint: object expected");
                }
                message.routePoint = $root.veryzhun.RoutePoint.fromObject(object.routePoint);
            }
            if (object.currentFnumVolume != null) {
                message.currentFnumVolume = object.currentFnumVolume | 0;
            }
            if (object.avgFnumVolume != null) {
                message.avgFnumVolume = object.avgFnumVolume | 0;
            }
            return message;
        };

        /**
         * Creates a plain object from a FlightRoute message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.FlightRoute
         * @static
         * @param {veryzhun.FlightRoute} message FlightRoute
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        FlightRoute.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.routePoint = null;
                object.currentFnumVolume = 0;
                object.avgFnumVolume = 0;
            }
            if (message.routePoint != null && message.hasOwnProperty("routePoint")) {
                object.routePoint = $root.veryzhun.RoutePoint.toObject(message.routePoint, options);
            }
            if (message.currentFnumVolume != null && message.hasOwnProperty("currentFnumVolume")) {
                object.currentFnumVolume = message.currentFnumVolume;
            }
            if (message.avgFnumVolume != null && message.hasOwnProperty("avgFnumVolume")) {
                object.avgFnumVolume = message.avgFnumVolume;
            }
            return object;
        };

        /**
         * Converts this FlightRoute to JSON.
         * @function toJSON
         * @memberof veryzhun.FlightRoute
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        FlightRoute.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for FlightRoute
         * @function getTypeUrl
         * @memberof veryzhun.FlightRoute
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        FlightRoute.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.FlightRoute";
        };

        return FlightRoute;
    })();

    veryzhun.FlightRouteTrace = (function () {

        /**
         * Properties of a FlightRouteTrace.
         * @memberof veryzhun
         * @interface IFlightRouteTrace
         * @property {Array.<veryzhun.IFlightRoute>|null} [flightRoute] FlightRouteTrace flightRoute
         */

        /**
         * Constructs a new FlightRouteTrace.
         * @memberof veryzhun
         * @classdesc Represents a FlightRouteTrace.
         * @implements IFlightRouteTrace
         * @constructor
         * @param {veryzhun.IFlightRouteTrace=} [properties] Properties to set
         */
        function FlightRouteTrace(properties) {
            this.flightRoute = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * FlightRouteTrace flightRoute.
         * @member {Array.<veryzhun.IFlightRoute>} flightRoute
         * @memberof veryzhun.FlightRouteTrace
         * @instance
         */
        FlightRouteTrace.prototype.flightRoute = $util.emptyArray;

        /**
         * Creates a new FlightRouteTrace instance using the specified properties.
         * @function create
         * @memberof veryzhun.FlightRouteTrace
         * @static
         * @param {veryzhun.IFlightRouteTrace=} [properties] Properties to set
         * @returns {veryzhun.FlightRouteTrace} FlightRouteTrace instance
         */
        FlightRouteTrace.create = function create(properties) {
            return new FlightRouteTrace(properties);
        };

        /**
         * Encodes the specified FlightRouteTrace message. Does not implicitly {@link veryzhun.FlightRouteTrace.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.FlightRouteTrace
         * @static
         * @param {veryzhun.IFlightRouteTrace} message FlightRouteTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightRouteTrace.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.flightRoute != null && message.flightRoute.length) {
                for (let i = 0; i < message.flightRoute.length; ++i) {
                    $root.veryzhun.FlightRoute.encode(message.flightRoute[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified FlightRouteTrace message, length delimited. Does not implicitly {@link veryzhun.FlightRouteTrace.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.FlightRouteTrace
         * @static
         * @param {veryzhun.IFlightRouteTrace} message FlightRouteTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightRouteTrace.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a FlightRouteTrace message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.FlightRouteTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.FlightRouteTrace} FlightRouteTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightRouteTrace.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.FlightRouteTrace();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        if (!(message.flightRoute && message.flightRoute.length)) {
                            message.flightRoute = [];
                        }
                        message.flightRoute.push($root.veryzhun.FlightRoute.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a FlightRouteTrace message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.FlightRouteTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.FlightRouteTrace} FlightRouteTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightRouteTrace.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a FlightRouteTrace message.
         * @function verify
         * @memberof veryzhun.FlightRouteTrace
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        FlightRouteTrace.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.flightRoute != null && message.hasOwnProperty("flightRoute")) {
                if (!Array.isArray(message.flightRoute)) {
                    return "flightRoute: array expected";
                }
                for (let i = 0; i < message.flightRoute.length; ++i) {
                    let error = $root.veryzhun.FlightRoute.verify(message.flightRoute[i]);
                    if (error) {
                        return "flightRoute." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a FlightRouteTrace message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.FlightRouteTrace
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.FlightRouteTrace} FlightRouteTrace
         */
        FlightRouteTrace.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.FlightRouteTrace) {
                return object;
            }
            let message = new $root.veryzhun.FlightRouteTrace();
            if (object.flightRoute) {
                if (!Array.isArray(object.flightRoute)) {
                    throw TypeError(".veryzhun.FlightRouteTrace.flightRoute: array expected");
                }
                message.flightRoute = [];
                for (let i = 0; i < object.flightRoute.length; ++i) {
                    if (typeof object.flightRoute[i] !== "object") {
                        throw TypeError(".veryzhun.FlightRouteTrace.flightRoute: object expected");
                    }
                    message.flightRoute[i] = $root.veryzhun.FlightRoute.fromObject(object.flightRoute[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a FlightRouteTrace message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.FlightRouteTrace
         * @static
         * @param {veryzhun.FlightRouteTrace} message FlightRouteTrace
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        FlightRouteTrace.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.flightRoute = [];
            }
            if (message.flightRoute && message.flightRoute.length) {
                object.flightRoute = [];
                for (let j = 0; j < message.flightRoute.length; ++j) {
                    object.flightRoute[j] = $root.veryzhun.FlightRoute.toObject(message.flightRoute[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this FlightRouteTrace to JSON.
         * @function toJSON
         * @memberof veryzhun.FlightRouteTrace
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        FlightRouteTrace.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for FlightRouteTrace
         * @function getTypeUrl
         * @memberof veryzhun.FlightRouteTrace
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        FlightRouteTrace.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.FlightRouteTrace";
        };

        return FlightRouteTrace;
    })();

    veryzhun.FlightTrace = (function () {

        /**
         * Properties of a FlightTrace.
         * @memberof veryzhun
         * @interface IFlightTrace
         * @property {veryzhun.ITrace|null} [trace] FlightTrace trace
         * @property {veryzhun.IFlightRouteTrace|null} [routeTrace] FlightTrace routeTrace
         */

        /**
         * Constructs a new FlightTrace.
         * @memberof veryzhun
         * @classdesc Represents a FlightTrace.
         * @implements IFlightTrace
         * @constructor
         * @param {veryzhun.IFlightTrace=} [properties] Properties to set
         */
        function FlightTrace(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * FlightTrace trace.
         * @member {veryzhun.ITrace|null|undefined} trace
         * @memberof veryzhun.FlightTrace
         * @instance
         */
        FlightTrace.prototype.trace = null;

        /**
         * FlightTrace routeTrace.
         * @member {veryzhun.IFlightRouteTrace|null|undefined} routeTrace
         * @memberof veryzhun.FlightTrace
         * @instance
         */
        FlightTrace.prototype.routeTrace = null;

        /**
         * Creates a new FlightTrace instance using the specified properties.
         * @function create
         * @memberof veryzhun.FlightTrace
         * @static
         * @param {veryzhun.IFlightTrace=} [properties] Properties to set
         * @returns {veryzhun.FlightTrace} FlightTrace instance
         */
        FlightTrace.create = function create(properties) {
            return new FlightTrace(properties);
        };

        /**
         * Encodes the specified FlightTrace message. Does not implicitly {@link veryzhun.FlightTrace.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.FlightTrace
         * @static
         * @param {veryzhun.IFlightTrace} message FlightTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightTrace.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.trace != null && Object.hasOwnProperty.call(message, "trace")) {
                $root.veryzhun.Trace.encode(message.trace, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            }
            if (message.routeTrace != null && Object.hasOwnProperty.call(message, "routeTrace")) {
                $root.veryzhun.FlightRouteTrace.encode(message.routeTrace, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
            }
            return writer;
        };

        /**
         * Encodes the specified FlightTrace message, length delimited. Does not implicitly {@link veryzhun.FlightTrace.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.FlightTrace
         * @static
         * @param {veryzhun.IFlightTrace} message FlightTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightTrace.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a FlightTrace message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.FlightTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.FlightTrace} FlightTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightTrace.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.FlightTrace();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.trace = $root.veryzhun.Trace.decode(reader, reader.uint32());
                        break;
                    }
                    case 2: {
                        message.routeTrace = $root.veryzhun.FlightRouteTrace.decode(reader, reader.uint32());
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a FlightTrace message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.FlightTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.FlightTrace} FlightTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightTrace.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a FlightTrace message.
         * @function verify
         * @memberof veryzhun.FlightTrace
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        FlightTrace.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.trace != null && message.hasOwnProperty("trace")) {
                let error = $root.veryzhun.Trace.verify(message.trace);
                if (error) {
                    return "trace." + error;
                }
            }
            if (message.routeTrace != null && message.hasOwnProperty("routeTrace")) {
                let error = $root.veryzhun.FlightRouteTrace.verify(message.routeTrace);
                if (error) {
                    return "routeTrace." + error;
                }
            }
            return null;
        };

        /**
         * Creates a FlightTrace message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.FlightTrace
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.FlightTrace} FlightTrace
         */
        FlightTrace.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.FlightTrace) {
                return object;
            }
            let message = new $root.veryzhun.FlightTrace();
            if (object.trace != null) {
                if (typeof object.trace !== "object") {
                    throw TypeError(".veryzhun.FlightTrace.trace: object expected");
                }
                message.trace = $root.veryzhun.Trace.fromObject(object.trace);
            }
            if (object.routeTrace != null) {
                if (typeof object.routeTrace !== "object") {
                    throw TypeError(".veryzhun.FlightTrace.routeTrace: object expected");
                }
                message.routeTrace = $root.veryzhun.FlightRouteTrace.fromObject(object.routeTrace);
            }
            return message;
        };

        /**
         * Creates a plain object from a FlightTrace message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.FlightTrace
         * @static
         * @param {veryzhun.FlightTrace} message FlightTrace
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        FlightTrace.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.trace = null;
                object.routeTrace = null;
            }
            if (message.trace != null && message.hasOwnProperty("trace")) {
                object.trace = $root.veryzhun.Trace.toObject(message.trace, options);
            }
            if (message.routeTrace != null && message.hasOwnProperty("routeTrace")) {
                object.routeTrace = $root.veryzhun.FlightRouteTrace.toObject(message.routeTrace, options);
            }
            return object;
        };

        /**
         * Converts this FlightTrace to JSON.
         * @function toJSON
         * @memberof veryzhun.FlightTrace
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        FlightTrace.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for FlightTrace
         * @function getTypeUrl
         * @memberof veryzhun.FlightTrace
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        FlightTrace.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.FlightTrace";
        };

        return FlightTrace;
    })();

    veryzhun.U3DAreaFlightTrace = (function () {

        /**
         * Properties of a U3DAreaFlightTrace.
         * @memberof veryzhun
         * @interface IU3DAreaFlightTrace
         * @property {Array.<veryzhun.IU3DTrace>|null} [flightTrace] U3DAreaFlightTrace flightTrace
         */

        /**
         * Constructs a new U3DAreaFlightTrace.
         * @memberof veryzhun
         * @classdesc Represents a U3DAreaFlightTrace.
         * @implements IU3DAreaFlightTrace
         * @constructor
         * @param {veryzhun.IU3DAreaFlightTrace=} [properties] Properties to set
         */
        function U3DAreaFlightTrace(properties) {
            this.flightTrace = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * U3DAreaFlightTrace flightTrace.
         * @member {Array.<veryzhun.IU3DTrace>} flightTrace
         * @memberof veryzhun.U3DAreaFlightTrace
         * @instance
         */
        U3DAreaFlightTrace.prototype.flightTrace = $util.emptyArray;

        /**
         * Creates a new U3DAreaFlightTrace instance using the specified properties.
         * @function create
         * @memberof veryzhun.U3DAreaFlightTrace
         * @static
         * @param {veryzhun.IU3DAreaFlightTrace=} [properties] Properties to set
         * @returns {veryzhun.U3DAreaFlightTrace} U3DAreaFlightTrace instance
         */
        U3DAreaFlightTrace.create = function create(properties) {
            return new U3DAreaFlightTrace(properties);
        };

        /**
         * Encodes the specified U3DAreaFlightTrace message. Does not implicitly {@link veryzhun.U3DAreaFlightTrace.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.U3DAreaFlightTrace
         * @static
         * @param {veryzhun.IU3DAreaFlightTrace} message U3DAreaFlightTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DAreaFlightTrace.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.flightTrace != null && message.flightTrace.length) {
                for (let i = 0; i < message.flightTrace.length; ++i) {
                    $root.veryzhun.U3DTrace.encode(message.flightTrace[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified U3DAreaFlightTrace message, length delimited. Does not implicitly {@link veryzhun.U3DAreaFlightTrace.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.U3DAreaFlightTrace
         * @static
         * @param {veryzhun.IU3DAreaFlightTrace} message U3DAreaFlightTrace message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        U3DAreaFlightTrace.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a U3DAreaFlightTrace message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.U3DAreaFlightTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.U3DAreaFlightTrace} U3DAreaFlightTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DAreaFlightTrace.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.U3DAreaFlightTrace();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        if (!(message.flightTrace && message.flightTrace.length)) {
                            message.flightTrace = [];
                        }
                        message.flightTrace.push($root.veryzhun.U3DTrace.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a U3DAreaFlightTrace message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.U3DAreaFlightTrace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.U3DAreaFlightTrace} U3DAreaFlightTrace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        U3DAreaFlightTrace.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a U3DAreaFlightTrace message.
         * @function verify
         * @memberof veryzhun.U3DAreaFlightTrace
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        U3DAreaFlightTrace.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.flightTrace != null && message.hasOwnProperty("flightTrace")) {
                if (!Array.isArray(message.flightTrace)) {
                    return "flightTrace: array expected";
                }
                for (let i = 0; i < message.flightTrace.length; ++i) {
                    let error = $root.veryzhun.U3DTrace.verify(message.flightTrace[i]);
                    if (error) {
                        return "flightTrace." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a U3DAreaFlightTrace message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.U3DAreaFlightTrace
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.U3DAreaFlightTrace} U3DAreaFlightTrace
         */
        U3DAreaFlightTrace.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.U3DAreaFlightTrace) {
                return object;
            }
            let message = new $root.veryzhun.U3DAreaFlightTrace();
            if (object.flightTrace) {
                if (!Array.isArray(object.flightTrace)) {
                    throw TypeError(".veryzhun.U3DAreaFlightTrace.flightTrace: array expected");
                }
                message.flightTrace = [];
                for (let i = 0; i < object.flightTrace.length; ++i) {
                    if (typeof object.flightTrace[i] !== "object") {
                        throw TypeError(".veryzhun.U3DAreaFlightTrace.flightTrace: object expected");
                    }
                    message.flightTrace[i] = $root.veryzhun.U3DTrace.fromObject(object.flightTrace[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a U3DAreaFlightTrace message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.U3DAreaFlightTrace
         * @static
         * @param {veryzhun.U3DAreaFlightTrace} message U3DAreaFlightTrace
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        U3DAreaFlightTrace.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.flightTrace = [];
            }
            if (message.flightTrace && message.flightTrace.length) {
                object.flightTrace = [];
                for (let j = 0; j < message.flightTrace.length; ++j) {
                    object.flightTrace[j] = $root.veryzhun.U3DTrace.toObject(message.flightTrace[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this U3DAreaFlightTrace to JSON.
         * @function toJSON
         * @memberof veryzhun.U3DAreaFlightTrace
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        U3DAreaFlightTrace.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for U3DAreaFlightTrace
         * @function getTypeUrl
         * @memberof veryzhun.U3DAreaFlightTrace
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        U3DAreaFlightTrace.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.U3DAreaFlightTrace";
        };

        return U3DAreaFlightTrace;
    })();

    veryzhun.PointFlow = (function () {

        /**
         * Properties of a PointFlow.
         * @memberof veryzhun
         * @interface IPointFlow
         * @property {string|null} [anum] PointFlow anum
         * @property {string|null} [fnum2] PointFlow fnum2
         * @property {string|null} [fnum3] PointFlow fnum3
         * @property {string|null} [org] PointFlow org
         * @property {string|null} [dst] PointFlow dst
         * @property {string|null} [flightRoutePoint] PointFlow flightRoutePoint
         * @property {number|null} [ctime] PointFlow ctime
         */

        /**
         * Constructs a new PointFlow.
         * @memberof veryzhun
         * @classdesc Represents a PointFlow.
         * @implements IPointFlow
         * @constructor
         * @param {veryzhun.IPointFlow=} [properties] Properties to set
         */
        function PointFlow(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * PointFlow anum.
         * @member {string} anum
         * @memberof veryzhun.PointFlow
         * @instance
         */
        PointFlow.prototype.anum = "";

        /**
         * PointFlow fnum2.
         * @member {string} fnum2
         * @memberof veryzhun.PointFlow
         * @instance
         */
        PointFlow.prototype.fnum2 = "";

        /**
         * PointFlow fnum3.
         * @member {string} fnum3
         * @memberof veryzhun.PointFlow
         * @instance
         */
        PointFlow.prototype.fnum3 = "";

        /**
         * PointFlow org.
         * @member {string} org
         * @memberof veryzhun.PointFlow
         * @instance
         */
        PointFlow.prototype.org = "";

        /**
         * PointFlow dst.
         * @member {string} dst
         * @memberof veryzhun.PointFlow
         * @instance
         */
        PointFlow.prototype.dst = "";

        /**
         * PointFlow flightRoutePoint.
         * @member {string} flightRoutePoint
         * @memberof veryzhun.PointFlow
         * @instance
         */
        PointFlow.prototype.flightRoutePoint = "";

        /**
         * PointFlow ctime.
         * @member {number} ctime
         * @memberof veryzhun.PointFlow
         * @instance
         */
        PointFlow.prototype.ctime = 0;

        /**
         * Creates a new PointFlow instance using the specified properties.
         * @function create
         * @memberof veryzhun.PointFlow
         * @static
         * @param {veryzhun.IPointFlow=} [properties] Properties to set
         * @returns {veryzhun.PointFlow} PointFlow instance
         */
        PointFlow.create = function create(properties) {
            return new PointFlow(properties);
        };

        /**
         * Encodes the specified PointFlow message. Does not implicitly {@link veryzhun.PointFlow.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.PointFlow
         * @static
         * @param {veryzhun.IPointFlow} message PointFlow message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PointFlow.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.anum != null && Object.hasOwnProperty.call(message, "anum")) {
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.anum);
            }
            if (message.fnum2 != null && Object.hasOwnProperty.call(message, "fnum2")) {
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.fnum2);
            }
            if (message.fnum3 != null && Object.hasOwnProperty.call(message, "fnum3")) {
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.fnum3);
            }
            if (message.org != null && Object.hasOwnProperty.call(message, "org")) {
                writer.uint32(/* id 4, wireType 2 =*/34).string(message.org);
            }
            if (message.dst != null && Object.hasOwnProperty.call(message, "dst")) {
                writer.uint32(/* id 5, wireType 2 =*/42).string(message.dst);
            }
            if (message.flightRoutePoint != null && Object.hasOwnProperty.call(message, "flightRoutePoint")) {
                writer.uint32(/* id 6, wireType 2 =*/50).string(message.flightRoutePoint);
            }
            if (message.ctime != null && Object.hasOwnProperty.call(message, "ctime")) {
                writer.uint32(/* id 7, wireType 0 =*/56).int32(message.ctime);
            }
            return writer;
        };

        /**
         * Encodes the specified PointFlow message, length delimited. Does not implicitly {@link veryzhun.PointFlow.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.PointFlow
         * @static
         * @param {veryzhun.IPointFlow} message PointFlow message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PointFlow.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a PointFlow message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.PointFlow
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.PointFlow} PointFlow
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PointFlow.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.PointFlow();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.anum = reader.string();
                        break;
                    }
                    case 2: {
                        message.fnum2 = reader.string();
                        break;
                    }
                    case 3: {
                        message.fnum3 = reader.string();
                        break;
                    }
                    case 4: {
                        message.org = reader.string();
                        break;
                    }
                    case 5: {
                        message.dst = reader.string();
                        break;
                    }
                    case 6: {
                        message.flightRoutePoint = reader.string();
                        break;
                    }
                    case 7: {
                        message.ctime = reader.int32();
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a PointFlow message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.PointFlow
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.PointFlow} PointFlow
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PointFlow.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a PointFlow message.
         * @function verify
         * @memberof veryzhun.PointFlow
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        PointFlow.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.anum != null && message.hasOwnProperty("anum")) {
                if (!$util.isString(message.anum)) {
                    return "anum: string expected";
                }
            }
            if (message.fnum2 != null && message.hasOwnProperty("fnum2")) {
                if (!$util.isString(message.fnum2)) {
                    return "fnum2: string expected";
                }
            }
            if (message.fnum3 != null && message.hasOwnProperty("fnum3")) {
                if (!$util.isString(message.fnum3)) {
                    return "fnum3: string expected";
                }
            }
            if (message.org != null && message.hasOwnProperty("org")) {
                if (!$util.isString(message.org)) {
                    return "org: string expected";
                }
            }
            if (message.dst != null && message.hasOwnProperty("dst")) {
                if (!$util.isString(message.dst)) {
                    return "dst: string expected";
                }
            }
            if (message.flightRoutePoint != null && message.hasOwnProperty("flightRoutePoint")) {
                if (!$util.isString(message.flightRoutePoint)) {
                    return "flightRoutePoint: string expected";
                }
            }
            if (message.ctime != null && message.hasOwnProperty("ctime")) {
                if (!$util.isInteger(message.ctime)) {
                    return "ctime: integer expected";
                }
            }
            return null;
        };

        /**
         * Creates a PointFlow message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.PointFlow
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.PointFlow} PointFlow
         */
        PointFlow.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.PointFlow) {
                return object;
            }
            let message = new $root.veryzhun.PointFlow();
            if (object.anum != null) {
                message.anum = String(object.anum);
            }
            if (object.fnum2 != null) {
                message.fnum2 = String(object.fnum2);
            }
            if (object.fnum3 != null) {
                message.fnum3 = String(object.fnum3);
            }
            if (object.org != null) {
                message.org = String(object.org);
            }
            if (object.dst != null) {
                message.dst = String(object.dst);
            }
            if (object.flightRoutePoint != null) {
                message.flightRoutePoint = String(object.flightRoutePoint);
            }
            if (object.ctime != null) {
                message.ctime = object.ctime | 0;
            }
            return message;
        };

        /**
         * Creates a plain object from a PointFlow message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.PointFlow
         * @static
         * @param {veryzhun.PointFlow} message PointFlow
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        PointFlow.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                object.anum = "";
                object.fnum2 = "";
                object.fnum3 = "";
                object.org = "";
                object.dst = "";
                object.flightRoutePoint = "";
                object.ctime = 0;
            }
            if (message.anum != null && message.hasOwnProperty("anum")) {
                object.anum = message.anum;
            }
            if (message.fnum2 != null && message.hasOwnProperty("fnum2")) {
                object.fnum2 = message.fnum2;
            }
            if (message.fnum3 != null && message.hasOwnProperty("fnum3")) {
                object.fnum3 = message.fnum3;
            }
            if (message.org != null && message.hasOwnProperty("org")) {
                object.org = message.org;
            }
            if (message.dst != null && message.hasOwnProperty("dst")) {
                object.dst = message.dst;
            }
            if (message.flightRoutePoint != null && message.hasOwnProperty("flightRoutePoint")) {
                object.flightRoutePoint = message.flightRoutePoint;
            }
            if (message.ctime != null && message.hasOwnProperty("ctime")) {
                object.ctime = message.ctime;
            }
            return object;
        };

        /**
         * Converts this PointFlow to JSON.
         * @function toJSON
         * @memberof veryzhun.PointFlow
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        PointFlow.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for PointFlow
         * @function getTypeUrl
         * @memberof veryzhun.PointFlow
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        PointFlow.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.PointFlow";
        };

        return PointFlow;
    })();

    veryzhun.PointFlowList = (function () {

        /**
         * Properties of a PointFlowList.
         * @memberof veryzhun
         * @interface IPointFlowList
         * @property {Array.<veryzhun.IPointFlow>|null} [pointFlow] PointFlowList pointFlow
         */

        /**
         * Constructs a new PointFlowList.
         * @memberof veryzhun
         * @classdesc Represents a PointFlowList.
         * @implements IPointFlowList
         * @constructor
         * @param {veryzhun.IPointFlowList=} [properties] Properties to set
         */
        function PointFlowList(properties) {
            this.pointFlow = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * PointFlowList pointFlow.
         * @member {Array.<veryzhun.IPointFlow>} pointFlow
         * @memberof veryzhun.PointFlowList
         * @instance
         */
        PointFlowList.prototype.pointFlow = $util.emptyArray;

        /**
         * Creates a new PointFlowList instance using the specified properties.
         * @function create
         * @memberof veryzhun.PointFlowList
         * @static
         * @param {veryzhun.IPointFlowList=} [properties] Properties to set
         * @returns {veryzhun.PointFlowList} PointFlowList instance
         */
        PointFlowList.create = function create(properties) {
            return new PointFlowList(properties);
        };

        /**
         * Encodes the specified PointFlowList message. Does not implicitly {@link veryzhun.PointFlowList.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.PointFlowList
         * @static
         * @param {veryzhun.IPointFlowList} message PointFlowList message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PointFlowList.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.pointFlow != null && message.pointFlow.length) {
                for (let i = 0; i < message.pointFlow.length; ++i) {
                    $root.veryzhun.PointFlow.encode(message.pointFlow[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified PointFlowList message, length delimited. Does not implicitly {@link veryzhun.PointFlowList.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.PointFlowList
         * @static
         * @param {veryzhun.IPointFlowList} message PointFlowList message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        PointFlowList.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a PointFlowList message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.PointFlowList
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.PointFlowList} PointFlowList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PointFlowList.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.PointFlowList();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        if (!(message.pointFlow && message.pointFlow.length)) {
                            message.pointFlow = [];
                        }
                        message.pointFlow.push($root.veryzhun.PointFlow.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a PointFlowList message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.PointFlowList
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.PointFlowList} PointFlowList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PointFlowList.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a PointFlowList message.
         * @function verify
         * @memberof veryzhun.PointFlowList
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        PointFlowList.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.pointFlow != null && message.hasOwnProperty("pointFlow")) {
                if (!Array.isArray(message.pointFlow)) {
                    return "pointFlow: array expected";
                }
                for (let i = 0; i < message.pointFlow.length; ++i) {
                    let error = $root.veryzhun.PointFlow.verify(message.pointFlow[i]);
                    if (error) {
                        return "pointFlow." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates a PointFlowList message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.PointFlowList
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.PointFlowList} PointFlowList
         */
        PointFlowList.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.PointFlowList) {
                return object;
            }
            let message = new $root.veryzhun.PointFlowList();
            if (object.pointFlow) {
                if (!Array.isArray(object.pointFlow)) {
                    throw TypeError(".veryzhun.PointFlowList.pointFlow: array expected");
                }
                message.pointFlow = [];
                for (let i = 0; i < object.pointFlow.length; ++i) {
                    if (typeof object.pointFlow[i] !== "object") {
                        throw TypeError(".veryzhun.PointFlowList.pointFlow: object expected");
                    }
                    message.pointFlow[i] = $root.veryzhun.PointFlow.fromObject(object.pointFlow[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from a PointFlowList message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.PointFlowList
         * @static
         * @param {veryzhun.PointFlowList} message PointFlowList
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        PointFlowList.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.pointFlow = [];
            }
            if (message.pointFlow && message.pointFlow.length) {
                object.pointFlow = [];
                for (let j = 0; j < message.pointFlow.length; ++j) {
                    object.pointFlow[j] = $root.veryzhun.PointFlow.toObject(message.pointFlow[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this PointFlowList to JSON.
         * @function toJSON
         * @memberof veryzhun.PointFlowList
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        PointFlowList.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for PointFlowList
         * @function getTypeUrl
         * @memberof veryzhun.PointFlowList
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        PointFlowList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.PointFlowList";
        };

        return PointFlowList;
    })();

    veryzhun.FlightPoint = (function () {

        /**
         * Properties of a FlightPoint.
         * @memberof veryzhun
         * @interface IFlightPoint
         * @property {number|Long|null} [time] FlightPoint time
         * @property {number|null} [lon] FlightPoint lon
         * @property {number|null} [lat] FlightPoint lat
         */

        /**
         * Constructs a new FlightPoint.
         * @memberof veryzhun
         * @classdesc Represents a FlightPoint.
         * @implements IFlightPoint
         * @constructor
         * @param {veryzhun.IFlightPoint=} [properties] Properties to set
         */
        function FlightPoint(properties) {
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * FlightPoint time.
         * @member {number|Long} time
         * @memberof veryzhun.FlightPoint
         * @instance
         */
        FlightPoint.prototype.time = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;

        /**
         * FlightPoint lon.
         * @member {number} lon
         * @memberof veryzhun.FlightPoint
         * @instance
         */
        FlightPoint.prototype.lon = 0;

        /**
         * FlightPoint lat.
         * @member {number} lat
         * @memberof veryzhun.FlightPoint
         * @instance
         */
        FlightPoint.prototype.lat = 0;

        /**
         * Creates a new FlightPoint instance using the specified properties.
         * @function create
         * @memberof veryzhun.FlightPoint
         * @static
         * @param {veryzhun.IFlightPoint=} [properties] Properties to set
         * @returns {veryzhun.FlightPoint} FlightPoint instance
         */
        FlightPoint.create = function create(properties) {
            return new FlightPoint(properties);
        };

        /**
         * Encodes the specified FlightPoint message. Does not implicitly {@link veryzhun.FlightPoint.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.FlightPoint
         * @static
         * @param {veryzhun.IFlightPoint} message FlightPoint message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightPoint.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.time != null && Object.hasOwnProperty.call(message, "time")) {
                writer.uint32(/* id 1, wireType 0 =*/8).int64(message.time);
            }
            if (message.lon != null && Object.hasOwnProperty.call(message, "lon")) {
                writer.uint32(/* id 2, wireType 1 =*/17).double(message.lon);
            }
            if (message.lat != null && Object.hasOwnProperty.call(message, "lat")) {
                writer.uint32(/* id 3, wireType 1 =*/25).double(message.lat);
            }
            return writer;
        };

        /**
         * Encodes the specified FlightPoint message, length delimited. Does not implicitly {@link veryzhun.FlightPoint.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.FlightPoint
         * @static
         * @param {veryzhun.IFlightPoint} message FlightPoint message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        FlightPoint.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes a FlightPoint message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.FlightPoint
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.FlightPoint} FlightPoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightPoint.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.FlightPoint();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.time = reader.int64();
                        break;
                    }
                    case 2: {
                        message.lon = reader.double();
                        break;
                    }
                    case 3: {
                        message.lat = reader.double();
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes a FlightPoint message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.FlightPoint
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.FlightPoint} FlightPoint
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FlightPoint.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies a FlightPoint message.
         * @function verify
         * @memberof veryzhun.FlightPoint
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        FlightPoint.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.time != null && message.hasOwnProperty("time")) {
                if (!$util.isInteger(message.time) &&
                    !(message.time && $util.isInteger(message.time.low) && $util.isInteger(message.time.high))) {
                    return "time: integer|Long expected";
                }
            }
            if (message.lon != null && message.hasOwnProperty("lon")) {
                if (typeof message.lon !== "number") {
                    return "lon: number expected";
                }
            }
            if (message.lat != null && message.hasOwnProperty("lat")) {
                if (typeof message.lat !== "number") {
                    return "lat: number expected";
                }
            }
            return null;
        };

        /**
         * Creates a FlightPoint message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.FlightPoint
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.FlightPoint} FlightPoint
         */
        FlightPoint.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.FlightPoint) {
                return object;
            }
            let message = new $root.veryzhun.FlightPoint();
            if (object.time != null) {
                if ($util.Long) {
                    (message.time = $util.Long.fromValue(object.time)).unsigned = false;
                } else if (typeof object.time === "string") {
                    message.time = parseInt(object.time, 10);
                } else if (typeof object.time === "number") {
                    message.time = object.time;
                } else if (typeof object.time === "object") {
                    message.time = new $util.LongBits(object.time.low >>> 0, object.time.high >>> 0).toNumber();
                }
            }
            if (object.lon != null) {
                message.lon = Number(object.lon);
            }
            if (object.lat != null) {
                message.lat = Number(object.lat);
            }
            return message;
        };

        /**
         * Creates a plain object from a FlightPoint message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.FlightPoint
         * @static
         * @param {veryzhun.FlightPoint} message FlightPoint
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        FlightPoint.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.defaults) {
                if ($util.Long) {
                    let long = new $util.Long(0, 0, false);
                    object.time = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else {
                    object.time = options.longs === String ? "0" : 0;
                }
                object.lon = 0;
                object.lat = 0;
            }
            if (message.time != null && message.hasOwnProperty("time")) {
                if (typeof message.time === "number") {
                    object.time = options.longs === String ? String(message.time) : message.time;
                } else {
                    object.time = options.longs === String ? $util.Long.prototype.toString.call(message.time) :
                        options.longs === Number ? new $util.LongBits(message.time.low >>> 0, message.time.high >>> 0).toNumber() :
                        message.time;
                }
            }
            if (message.lon != null && message.hasOwnProperty("lon")) {
                object.lon = options.json && !isFinite(message.lon) ? String(message.lon) : message.lon;
            }
            if (message.lat != null && message.hasOwnProperty("lat")) {
                object.lat = options.json && !isFinite(message.lat) ? String(message.lat) : message.lat;
            }
            return object;
        };

        /**
         * Converts this FlightPoint to JSON.
         * @function toJSON
         * @memberof veryzhun.FlightPoint
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        FlightPoint.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for FlightPoint
         * @function getTypeUrl
         * @memberof veryzhun.FlightPoint
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        FlightPoint.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.FlightPoint";
        };

        return FlightPoint;
    })();

    veryzhun.AirportOneFlight = (function () {

        /**
         * Properties of an AirportOneFlight.
         * @memberof veryzhun
         * @interface IAirportOneFlight
         * @property {string|null} [id] AirportOneFlight id
         * @property {string|null} [fnum] AirportOneFlight fnum
         * @property {string|null} [anum] AirportOneFlight anum
         * @property {string|null} [dep] AirportOneFlight dep
         * @property {string|null} [arr] AirportOneFlight arr
         * @property {number|Long|null} [depPlan] AirportOneFlight depPlan
         * @property {number|Long|null} [arrPlan] AirportOneFlight arrPlan
         * @property {number|Long|null} [depAct] AirportOneFlight depAct
         * @property {number|Long|null} [arrAct] AirportOneFlight arrAct
         * @property {Array.<veryzhun.IFlightPoint>|null} [path] AirportOneFlight path
         */

        /**
         * Constructs a new AirportOneFlight.
         * @memberof veryzhun
         * @classdesc Represents an AirportOneFlight.
         * @implements IAirportOneFlight
         * @constructor
         * @param {veryzhun.IAirportOneFlight=} [properties] Properties to set
         */
        function AirportOneFlight(properties) {
            this.path = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * AirportOneFlight id.
         * @member {string} id
         * @memberof veryzhun.AirportOneFlight
         * @instance
         */
        AirportOneFlight.prototype.id = "";

        /**
         * AirportOneFlight fnum.
         * @member {string} fnum
         * @memberof veryzhun.AirportOneFlight
         * @instance
         */
        AirportOneFlight.prototype.fnum = "";

        /**
         * AirportOneFlight anum.
         * @member {string} anum
         * @memberof veryzhun.AirportOneFlight
         * @instance
         */
        AirportOneFlight.prototype.anum = "";

        /**
         * AirportOneFlight dep.
         * @member {string} dep
         * @memberof veryzhun.AirportOneFlight
         * @instance
         */
        AirportOneFlight.prototype.dep = "";

        /**
         * AirportOneFlight arr.
         * @member {string} arr
         * @memberof veryzhun.AirportOneFlight
         * @instance
         */
        AirportOneFlight.prototype.arr = "";

        /**
         * AirportOneFlight depPlan.
         * @member {number|Long} depPlan
         * @memberof veryzhun.AirportOneFlight
         * @instance
         */
        AirportOneFlight.prototype.depPlan = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;

        /**
         * AirportOneFlight arrPlan.
         * @member {number|Long} arrPlan
         * @memberof veryzhun.AirportOneFlight
         * @instance
         */
        AirportOneFlight.prototype.arrPlan = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;

        /**
         * AirportOneFlight depAct.
         * @member {number|Long} depAct
         * @memberof veryzhun.AirportOneFlight
         * @instance
         */
        AirportOneFlight.prototype.depAct = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;

        /**
         * AirportOneFlight arrAct.
         * @member {number|Long} arrAct
         * @memberof veryzhun.AirportOneFlight
         * @instance
         */
        AirportOneFlight.prototype.arrAct = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;

        /**
         * AirportOneFlight path.
         * @member {Array.<veryzhun.IFlightPoint>} path
         * @memberof veryzhun.AirportOneFlight
         * @instance
         */
        AirportOneFlight.prototype.path = $util.emptyArray;

        /**
         * Creates a new AirportOneFlight instance using the specified properties.
         * @function create
         * @memberof veryzhun.AirportOneFlight
         * @static
         * @param {veryzhun.IAirportOneFlight=} [properties] Properties to set
         * @returns {veryzhun.AirportOneFlight} AirportOneFlight instance
         */
        AirportOneFlight.create = function create(properties) {
            return new AirportOneFlight(properties);
        };

        /**
         * Encodes the specified AirportOneFlight message. Does not implicitly {@link veryzhun.AirportOneFlight.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.AirportOneFlight
         * @static
         * @param {veryzhun.IAirportOneFlight} message AirportOneFlight message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        AirportOneFlight.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.id != null && Object.hasOwnProperty.call(message, "id")) {
                writer.uint32(/* id 1, wireType 2 =*/10).string(message.id);
            }
            if (message.fnum != null && Object.hasOwnProperty.call(message, "fnum")) {
                writer.uint32(/* id 2, wireType 2 =*/18).string(message.fnum);
            }
            if (message.anum != null && Object.hasOwnProperty.call(message, "anum")) {
                writer.uint32(/* id 3, wireType 2 =*/26).string(message.anum);
            }
            if (message.dep != null && Object.hasOwnProperty.call(message, "dep")) {
                writer.uint32(/* id 4, wireType 2 =*/34).string(message.dep);
            }
            if (message.arr != null && Object.hasOwnProperty.call(message, "arr")) {
                writer.uint32(/* id 5, wireType 2 =*/42).string(message.arr);
            }
            if (message.depPlan != null && Object.hasOwnProperty.call(message, "depPlan")) {
                writer.uint32(/* id 6, wireType 0 =*/48).int64(message.depPlan);
            }
            if (message.arrPlan != null && Object.hasOwnProperty.call(message, "arrPlan")) {
                writer.uint32(/* id 7, wireType 0 =*/56).int64(message.arrPlan);
            }
            if (message.depAct != null && Object.hasOwnProperty.call(message, "depAct")) {
                writer.uint32(/* id 8, wireType 0 =*/64).int64(message.depAct);
            }
            if (message.arrAct != null && Object.hasOwnProperty.call(message, "arrAct")) {
                writer.uint32(/* id 9, wireType 0 =*/72).int64(message.arrAct);
            }
            if (message.path != null && message.path.length) {
                for (let i = 0; i < message.path.length; ++i) {
                    $root.veryzhun.FlightPoint.encode(message.path[i], writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified AirportOneFlight message, length delimited. Does not implicitly {@link veryzhun.AirportOneFlight.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.AirportOneFlight
         * @static
         * @param {veryzhun.IAirportOneFlight} message AirportOneFlight message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        AirportOneFlight.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes an AirportOneFlight message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.AirportOneFlight
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.AirportOneFlight} AirportOneFlight
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        AirportOneFlight.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.AirportOneFlight();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        message.id = reader.string();
                        break;
                    }
                    case 2: {
                        message.fnum = reader.string();
                        break;
                    }
                    case 3: {
                        message.anum = reader.string();
                        break;
                    }
                    case 4: {
                        message.dep = reader.string();
                        break;
                    }
                    case 5: {
                        message.arr = reader.string();
                        break;
                    }
                    case 6: {
                        message.depPlan = reader.int64();
                        break;
                    }
                    case 7: {
                        message.arrPlan = reader.int64();
                        break;
                    }
                    case 8: {
                        message.depAct = reader.int64();
                        break;
                    }
                    case 9: {
                        message.arrAct = reader.int64();
                        break;
                    }
                    case 10: {
                        if (!(message.path && message.path.length)) {
                            message.path = [];
                        }
                        message.path.push($root.veryzhun.FlightPoint.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes an AirportOneFlight message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.AirportOneFlight
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.AirportOneFlight} AirportOneFlight
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        AirportOneFlight.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies an AirportOneFlight message.
         * @function verify
         * @memberof veryzhun.AirportOneFlight
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        AirportOneFlight.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.id != null && message.hasOwnProperty("id")) {
                if (!$util.isString(message.id)) {
                    return "id: string expected";
                }
            }
            if (message.fnum != null && message.hasOwnProperty("fnum")) {
                if (!$util.isString(message.fnum)) {
                    return "fnum: string expected";
                }
            }
            if (message.anum != null && message.hasOwnProperty("anum")) {
                if (!$util.isString(message.anum)) {
                    return "anum: string expected";
                }
            }
            if (message.dep != null && message.hasOwnProperty("dep")) {
                if (!$util.isString(message.dep)) {
                    return "dep: string expected";
                }
            }
            if (message.arr != null && message.hasOwnProperty("arr")) {
                if (!$util.isString(message.arr)) {
                    return "arr: string expected";
                }
            }
            if (message.depPlan != null && message.hasOwnProperty("depPlan")) {
                if (!$util.isInteger(message.depPlan) &&
                    !(message.depPlan && $util.isInteger(message.depPlan.low) && $util.isInteger(message.depPlan.high))) {
                    return "depPlan: integer|Long expected";
                }
            }
            if (message.arrPlan != null && message.hasOwnProperty("arrPlan")) {
                if (!$util.isInteger(message.arrPlan) &&
                    !(message.arrPlan && $util.isInteger(message.arrPlan.low) && $util.isInteger(message.arrPlan.high))) {
                    return "arrPlan: integer|Long expected";
                }
            }
            if (message.depAct != null && message.hasOwnProperty("depAct")) {
                if (!$util.isInteger(message.depAct) &&
                    !(message.depAct && $util.isInteger(message.depAct.low) && $util.isInteger(message.depAct.high))) {
                    return "depAct: integer|Long expected";
                }
            }
            if (message.arrAct != null && message.hasOwnProperty("arrAct")) {
                if (!$util.isInteger(message.arrAct) &&
                    !(message.arrAct && $util.isInteger(message.arrAct.low) && $util.isInteger(message.arrAct.high))) {
                    return "arrAct: integer|Long expected";
                }
            }
            if (message.path != null && message.hasOwnProperty("path")) {
                if (!Array.isArray(message.path)) {
                    return "path: array expected";
                }
                for (let i = 0; i < message.path.length; ++i) {
                    let error = $root.veryzhun.FlightPoint.verify(message.path[i]);
                    if (error) {
                        return "path." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates an AirportOneFlight message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.AirportOneFlight
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.AirportOneFlight} AirportOneFlight
         */
        AirportOneFlight.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.AirportOneFlight) {
                return object;
            }
            let message = new $root.veryzhun.AirportOneFlight();
            if (object.id != null) {
                message.id = String(object.id);
            }
            if (object.fnum != null) {
                message.fnum = String(object.fnum);
            }
            if (object.anum != null) {
                message.anum = String(object.anum);
            }
            if (object.dep != null) {
                message.dep = String(object.dep);
            }
            if (object.arr != null) {
                message.arr = String(object.arr);
            }
            if (object.depPlan != null) {
                if ($util.Long) {
                    (message.depPlan = $util.Long.fromValue(object.depPlan)).unsigned = false;
                } else if (typeof object.depPlan === "string") {
                    message.depPlan = parseInt(object.depPlan, 10);
                } else if (typeof object.depPlan === "number") {
                    message.depPlan = object.depPlan;
                } else if (typeof object.depPlan === "object") {
                    message.depPlan = new $util.LongBits(object.depPlan.low >>> 0, object.depPlan.high >>> 0).toNumber();
                }
            }
            if (object.arrPlan != null) {
                if ($util.Long) {
                    (message.arrPlan = $util.Long.fromValue(object.arrPlan)).unsigned = false;
                } else if (typeof object.arrPlan === "string") {
                    message.arrPlan = parseInt(object.arrPlan, 10);
                } else if (typeof object.arrPlan === "number") {
                    message.arrPlan = object.arrPlan;
                } else if (typeof object.arrPlan === "object") {
                    message.arrPlan = new $util.LongBits(object.arrPlan.low >>> 0, object.arrPlan.high >>> 0).toNumber();
                }
            }
            if (object.depAct != null) {
                if ($util.Long) {
                    (message.depAct = $util.Long.fromValue(object.depAct)).unsigned = false;
                } else if (typeof object.depAct === "string") {
                    message.depAct = parseInt(object.depAct, 10);
                } else if (typeof object.depAct === "number") {
                    message.depAct = object.depAct;
                } else if (typeof object.depAct === "object") {
                    message.depAct = new $util.LongBits(object.depAct.low >>> 0, object.depAct.high >>> 0).toNumber();
                }
            }
            if (object.arrAct != null) {
                if ($util.Long) {
                    (message.arrAct = $util.Long.fromValue(object.arrAct)).unsigned = false;
                } else if (typeof object.arrAct === "string") {
                    message.arrAct = parseInt(object.arrAct, 10);
                } else if (typeof object.arrAct === "number") {
                    message.arrAct = object.arrAct;
                } else if (typeof object.arrAct === "object") {
                    message.arrAct = new $util.LongBits(object.arrAct.low >>> 0, object.arrAct.high >>> 0).toNumber();
                }
            }
            if (object.path) {
                if (!Array.isArray(object.path)) {
                    throw TypeError(".veryzhun.AirportOneFlight.path: array expected");
                }
                message.path = [];
                for (let i = 0; i < object.path.length; ++i) {
                    if (typeof object.path[i] !== "object") {
                        throw TypeError(".veryzhun.AirportOneFlight.path: object expected");
                    }
                    message.path[i] = $root.veryzhun.FlightPoint.fromObject(object.path[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from an AirportOneFlight message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.AirportOneFlight
         * @static
         * @param {veryzhun.AirportOneFlight} message AirportOneFlight
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        AirportOneFlight.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.path = [];
            }
            if (options.defaults) {
                object.id = "";
                object.fnum = "";
                object.anum = "";
                object.dep = "";
                object.arr = "";
                if ($util.Long) {
                    let long = new $util.Long(0, 0, false);
                    object.depPlan = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else {
                    object.depPlan = options.longs === String ? "0" : 0;
                }
                if ($util.Long) {
                    let long = new $util.Long(0, 0, false);
                    object.arrPlan = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else {
                    object.arrPlan = options.longs === String ? "0" : 0;
                }
                if ($util.Long) {
                    let long = new $util.Long(0, 0, false);
                    object.depAct = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else {
                    object.depAct = options.longs === String ? "0" : 0;
                }
                if ($util.Long) {
                    let long = new $util.Long(0, 0, false);
                    object.arrAct = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else {
                    object.arrAct = options.longs === String ? "0" : 0;
                }
            }
            if (message.id != null && message.hasOwnProperty("id")) {
                object.id = message.id;
            }
            if (message.fnum != null && message.hasOwnProperty("fnum")) {
                object.fnum = message.fnum;
            }
            if (message.anum != null && message.hasOwnProperty("anum")) {
                object.anum = message.anum;
            }
            if (message.dep != null && message.hasOwnProperty("dep")) {
                object.dep = message.dep;
            }
            if (message.arr != null && message.hasOwnProperty("arr")) {
                object.arr = message.arr;
            }
            if (message.depPlan != null && message.hasOwnProperty("depPlan")) {
                if (typeof message.depPlan === "number") {
                    object.depPlan = options.longs === String ? String(message.depPlan) : message.depPlan;
                } else {
                    object.depPlan = options.longs === String ? $util.Long.prototype.toString.call(message.depPlan) :
                        options.longs === Number ? new $util.LongBits(message.depPlan.low >>> 0, message.depPlan.high >>> 0).toNumber() :
                        message.depPlan;
                }
            }
            if (message.arrPlan != null && message.hasOwnProperty("arrPlan")) {
                if (typeof message.arrPlan === "number") {
                    object.arrPlan = options.longs === String ? String(message.arrPlan) : message.arrPlan;
                } else {
                    object.arrPlan = options.longs === String ? $util.Long.prototype.toString.call(message.arrPlan) :
                        options.longs === Number ? new $util.LongBits(message.arrPlan.low >>> 0, message.arrPlan.high >>> 0).toNumber() :
                        message.arrPlan;
                }
            }
            if (message.depAct != null && message.hasOwnProperty("depAct")) {
                if (typeof message.depAct === "number") {
                    object.depAct = options.longs === String ? String(message.depAct) : message.depAct;
                } else {
                    object.depAct = options.longs === String ? $util.Long.prototype.toString.call(message.depAct) :
                        options.longs === Number ? new $util.LongBits(message.depAct.low >>> 0, message.depAct.high >>> 0).toNumber() :
                        message.depAct;
                }
            }
            if (message.arrAct != null && message.hasOwnProperty("arrAct")) {
                if (typeof message.arrAct === "number") {
                    object.arrAct = options.longs === String ? String(message.arrAct) : message.arrAct;
                } else {
                    object.arrAct = options.longs === String ? $util.Long.prototype.toString.call(message.arrAct) :
                        options.longs === Number ? new $util.LongBits(message.arrAct.low >>> 0, message.arrAct.high >>> 0).toNumber() :
                        message.arrAct;
                }
            }
            if (message.path && message.path.length) {
                object.path = [];
                for (let j = 0; j < message.path.length; ++j) {
                    object.path[j] = $root.veryzhun.FlightPoint.toObject(message.path[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this AirportOneFlight to JSON.
         * @function toJSON
         * @memberof veryzhun.AirportOneFlight
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        AirportOneFlight.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for AirportOneFlight
         * @function getTypeUrl
         * @memberof veryzhun.AirportOneFlight
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        AirportOneFlight.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.AirportOneFlight";
        };

        return AirportOneFlight;
    })();

    veryzhun.AirportFlightList = (function () {

        /**
         * Properties of an AirportFlightList.
         * @memberof veryzhun
         * @interface IAirportFlightList
         * @property {Array.<veryzhun.IAirportOneFlight>|null} [oneFlight] AirportFlightList oneFlight
         */

        /**
         * Constructs a new AirportFlightList.
         * @memberof veryzhun
         * @classdesc Represents an AirportFlightList.
         * @implements IAirportFlightList
         * @constructor
         * @param {veryzhun.IAirportFlightList=} [properties] Properties to set
         */
        function AirportFlightList(properties) {
            this.oneFlight = [];
            if (properties) {
                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) {
                    if (properties[keys[i]] != null) {
                        this[keys[i]] = properties[keys[i]];
                    }
                }
            }
        }

        /**
         * AirportFlightList oneFlight.
         * @member {Array.<veryzhun.IAirportOneFlight>} oneFlight
         * @memberof veryzhun.AirportFlightList
         * @instance
         */
        AirportFlightList.prototype.oneFlight = $util.emptyArray;

        /**
         * Creates a new AirportFlightList instance using the specified properties.
         * @function create
         * @memberof veryzhun.AirportFlightList
         * @static
         * @param {veryzhun.IAirportFlightList=} [properties] Properties to set
         * @returns {veryzhun.AirportFlightList} AirportFlightList instance
         */
        AirportFlightList.create = function create(properties) {
            return new AirportFlightList(properties);
        };

        /**
         * Encodes the specified AirportFlightList message. Does not implicitly {@link veryzhun.AirportFlightList.verify|verify} messages.
         * @function encode
         * @memberof veryzhun.AirportFlightList
         * @static
         * @param {veryzhun.IAirportFlightList} message AirportFlightList message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        AirportFlightList.encode = function encode(message, writer) {
            if (!writer) {
                writer = $Writer.create();
            }
            if (message.oneFlight != null && message.oneFlight.length) {
                for (let i = 0; i < message.oneFlight.length; ++i) {
                    $root.veryzhun.AirportOneFlight.encode(message.oneFlight[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
                }
            }
            return writer;
        };

        /**
         * Encodes the specified AirportFlightList message, length delimited. Does not implicitly {@link veryzhun.AirportFlightList.verify|verify} messages.
         * @function encodeDelimited
         * @memberof veryzhun.AirportFlightList
         * @static
         * @param {veryzhun.IAirportFlightList} message AirportFlightList message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        AirportFlightList.encodeDelimited = function encodeDelimited(message, writer) {
            return this.encode(message, writer).ldelim();
        };

        /**
         * Decodes an AirportFlightList message from the specified reader or buffer.
         * @function decode
         * @memberof veryzhun.AirportFlightList
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {veryzhun.AirportFlightList} AirportFlightList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        AirportFlightList.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader)) {
                reader = $Reader.create(reader);
            }
            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.veryzhun.AirportFlightList();
            while (reader.pos < end) {
                let tag = reader.uint32();
                switch (tag >>> 3) {
                    case 1: {
                        if (!(message.oneFlight && message.oneFlight.length)) {
                            message.oneFlight = [];
                        }
                        message.oneFlight.push($root.veryzhun.AirportOneFlight.decode(reader, reader.uint32()));
                        break;
                    }
                    default:
                        reader.skipType(tag & 7);
                        break;
                }
            }
            return message;
        };

        /**
         * Decodes an AirportFlightList message from the specified reader or buffer, length delimited.
         * @function decodeDelimited
         * @memberof veryzhun.AirportFlightList
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @returns {veryzhun.AirportFlightList} AirportFlightList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        AirportFlightList.decodeDelimited = function decodeDelimited(reader) {
            if (!(reader instanceof $Reader)) {
                reader = new $Reader(reader);
            }
            return this.decode(reader, reader.uint32());
        };

        /**
         * Verifies an AirportFlightList message.
         * @function verify
         * @memberof veryzhun.AirportFlightList
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        AirportFlightList.verify = function verify(message) {
            if (typeof message !== "object" || message === null) {
                return "object expected";
            }
            if (message.oneFlight != null && message.hasOwnProperty("oneFlight")) {
                if (!Array.isArray(message.oneFlight)) {
                    return "oneFlight: array expected";
                }
                for (let i = 0; i < message.oneFlight.length; ++i) {
                    let error = $root.veryzhun.AirportOneFlight.verify(message.oneFlight[i]);
                    if (error) {
                        return "oneFlight." + error;
                    }
                }
            }
            return null;
        };

        /**
         * Creates an AirportFlightList message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof veryzhun.AirportFlightList
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {veryzhun.AirportFlightList} AirportFlightList
         */
        AirportFlightList.fromObject = function fromObject(object) {
            if (object instanceof $root.veryzhun.AirportFlightList) {
                return object;
            }
            let message = new $root.veryzhun.AirportFlightList();
            if (object.oneFlight) {
                if (!Array.isArray(object.oneFlight)) {
                    throw TypeError(".veryzhun.AirportFlightList.oneFlight: array expected");
                }
                message.oneFlight = [];
                for (let i = 0; i < object.oneFlight.length; ++i) {
                    if (typeof object.oneFlight[i] !== "object") {
                        throw TypeError(".veryzhun.AirportFlightList.oneFlight: object expected");
                    }
                    message.oneFlight[i] = $root.veryzhun.AirportOneFlight.fromObject(object.oneFlight[i]);
                }
            }
            return message;
        };

        /**
         * Creates a plain object from an AirportFlightList message. Also converts values to other types if specified.
         * @function toObject
         * @memberof veryzhun.AirportFlightList
         * @static
         * @param {veryzhun.AirportFlightList} message AirportFlightList
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        AirportFlightList.toObject = function toObject(message, options) {
            if (!options) {
                options = {};
            }
            let object = {};
            if (options.arrays || options.defaults) {
                object.oneFlight = [];
            }
            if (message.oneFlight && message.oneFlight.length) {
                object.oneFlight = [];
                for (let j = 0; j < message.oneFlight.length; ++j) {
                    object.oneFlight[j] = $root.veryzhun.AirportOneFlight.toObject(message.oneFlight[j], options);
                }
            }
            return object;
        };

        /**
         * Converts this AirportFlightList to JSON.
         * @function toJSON
         * @memberof veryzhun.AirportFlightList
         * @instance
         * @returns {Object.<string,*>} JSON object
         */
        AirportFlightList.prototype.toJSON = function toJSON() {
            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
        };

        /**
         * Gets the default type url for AirportFlightList
         * @function getTypeUrl
         * @memberof veryzhun.AirportFlightList
         * @static
         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns {string} The default type url
         */
        AirportFlightList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
            if (typeUrlPrefix === undefined) {
                typeUrlPrefix = "type.googleapis.com";
            }
            return typeUrlPrefix + "/veryzhun.AirportFlightList";
        };

        return AirportFlightList;
    })();

    return veryzhun;
})();

export { $root as default };
